GtkButtonPeer.java (handleEvent): Remove modality check.

2003-10-08  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GtkButtonPeer.java (handleEvent): Remove
	modality check.
	* gnu/java/awt/peer/gtk/GtkDialogPeer.java (initializeInsets):
	Initialize insets to use latest insets.
	* gnu/java/awt/peer/gtk/GtkFramePeer.java: Likewise.
	* gnu/java/awt/peer/gtk/GtkWindowPeer.java (latestInsets): New
	field.
	(postConfigureEvent): Update latestInsets field when insets
	change.  Remove call to setSize.  Move validate call outside of
	if blocks.
	(setVisible): Call setBounds before showing window.
	(nativeSetVisible): New native method.
	* java/awt/Window.java (show): Show visible owned windows.
	(hide): Hide visible owned windows.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
	(awt_event_handler): Implement modality using GTK grabs.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
	(global_gtk_window_group): New global variable.
	(gtkInit): Initialize global_gtk_window_group.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (create):
	Clamp width and height values to at least 1.  Add this window to
	the global GTK window group.
	(setVisible): Rename to nativeSetVisible.
	(setup_window): Remove function.
	(setSize): Clamp width and height values to at least 1.
	(nativeSetBounds): Likewise.
	(gdk_window_get_root_geometry): Remove function.
	* jni/gtk-peer/gtkpeer.h: Remove gdk_window_get_root_geometry
	and setup_window declarations.  Declare global_gtk_window_group.

From-SVN: r72252
This commit is contained in:
Thomas Fitzsimmons 2003-10-09 00:26:29 +00:00 committed by Thomas Fitzsimmons
parent ba401f2f1f
commit 23a555b077
10 changed files with 185 additions and 123 deletions

View file

@ -813,7 +813,7 @@ generates_key_typed_event (GdkEvent *event, GtkWidget *source)
void
awt_event_handler (GdkEvent *event)
{
jobject *obj_ptr;
jobject *event_obj_ptr;
static guint32 button_click_time = 0;
static GdkWindow *button_window = NULL;
static guint button_number = -1;
@ -865,12 +865,49 @@ awt_event_handler (GdkEvent *event)
NULL,
NULL,
NULL,
(guchar **)&obj_ptr))
(guchar **)&event_obj_ptr))
{
GtkWidget *event_widget;
GtkWidget *grab_widget;
jobject *grab_obj_ptr = NULL;
void *ptr;
/* Implement modality using GTK grabs. */
g_assert (global_gtk_window_group);
if (global_gtk_window_group->grabs)
{
grab_widget = global_gtk_window_group->grabs->data;
g_assert (grab_widget);
gdk_property_get (grab_widget->window,
gdk_atom_intern ("_GNU_GTKAWT_ADDR", FALSE),
gdk_atom_intern ("CARDINAL", FALSE),
0,
sizeof (jobject),
FALSE,
NULL,
NULL,
NULL,
(guchar **)&grab_obj_ptr);
ptr = NSA_GET_PTR (gdk_env, *event_obj_ptr);
event_widget = GTK_WIDGET(ptr);
if (GTK_WIDGET_IS_SENSITIVE (event_widget) &&
gtk_widget_is_ancestor (event_widget, grab_widget))
{
g_free (grab_obj_ptr);
grab_obj_ptr = event_obj_ptr;
}
}
else
grab_obj_ptr = event_obj_ptr;
switch (event->type)
{
case GDK_BUTTON_PRESS:
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
AWT_MOUSE_PRESSED,
(jlong)event->button.time,
state_to_awt_mods (event->button.state) |
@ -902,7 +939,8 @@ awt_event_handler (GdkEvent *event)
/* if (--grab_counter == 0)
gdk_pointer_ungrab (event->button.time);
*/
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postMouseEventID,
AWT_MOUSE_RELEASED,
(jlong)event->button.time,
state_to_awt_mods (event->button.state) |
@ -918,7 +956,8 @@ awt_event_handler (GdkEvent *event)
&& event->button.y >= 0
&& event->button.x <= width
&& event->button.y <= height)
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postMouseEventID,
AWT_MOUSE_CLICKED,
(jlong)event->button.time,
state_to_awt_mods (event->button.state) |
@ -930,7 +969,7 @@ awt_event_handler (GdkEvent *event)
}
break;
case GDK_MOTION_NOTIFY:
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
AWT_MOUSE_MOVED,
(jlong)event->motion.time,
state_to_awt_mods (event->motion.state),
@ -944,7 +983,8 @@ awt_event_handler (GdkEvent *event)
| GDK_BUTTON4_MASK
| GDK_BUTTON5_MASK))
{
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postMouseEventID,
AWT_MOUSE_DRAGGED,
(jlong)event->motion.time,
state_to_awt_mods (event->motion.state),
@ -954,7 +994,7 @@ awt_event_handler (GdkEvent *event)
}
break;
case GDK_ENTER_NOTIFY:
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr, postMouseEventID,
AWT_MOUSE_ENTERED,
(jlong)event->crossing.time,
state_to_awt_mods (event->crossing.state),
@ -964,7 +1004,8 @@ awt_event_handler (GdkEvent *event)
break;
case GDK_LEAVE_NOTIFY:
if (event->crossing.mode == GDK_CROSSING_NORMAL)
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr, postMouseEventID,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postMouseEventID,
AWT_MOUSE_EXITED,
(jlong)event->crossing.time,
state_to_awt_mods (event->crossing.state),
@ -1005,7 +1046,7 @@ awt_event_handler (GdkEvent *event)
bottom = r.height - h - y;
right = r.width - w - x;
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
postConfigureEventID,
(jint) event->configure.x,
(jint) event->configure.y,
@ -1021,7 +1062,7 @@ awt_event_handler (GdkEvent *event)
break;
case GDK_EXPOSE:
{
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
postExposeEventID,
(jint)event->expose.area.x,
(jint)event->expose.area.y,
@ -1066,9 +1107,9 @@ awt_event_handler (GdkEvent *event)
NULL,
NULL,
NULL,
(guchar **)&obj_ptr);
(guchar **)&grab_obj_ptr);
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postKeyEventID,
(jint) AWT_KEY_PRESSED,
(jlong) event->key.time,
@ -1078,11 +1119,11 @@ awt_event_handler (GdkEvent *event)
keysym_to_awt_keylocation (event));
if (generates_key_typed_event (event, window->focus_widget))
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postKeyEventID,
(jint) AWT_KEY_TYPED,
(jlong) event->key.time,
state_to_awt_mods (event->key.state),
state_to_awt_mods (event->key.state),
VK_UNDEFINED,
keyevent_to_awt_keychar (event),
AWT_KEY_LOCATION_UNKNOWN);
@ -1121,9 +1162,9 @@ awt_event_handler (GdkEvent *event)
NULL,
NULL,
NULL,
(guchar **)&obj_ptr);
(guchar **)&grab_obj_ptr);
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *grab_obj_ptr,
postKeyEventID,
(jint) AWT_KEY_RELEASED,
(jlong) event->key.time,
@ -1135,7 +1176,7 @@ awt_event_handler (GdkEvent *event)
}
break;
case GDK_FOCUS_CHANGE:
(*gdk_env)->CallVoidMethod (gdk_env, *obj_ptr,
(*gdk_env)->CallVoidMethod (gdk_env, *event_obj_ptr,
postFocusEventID,
(jint) (event->focus_change.in) ?
AWT_FOCUS_GAINED : AWT_FOCUS_LOST,
@ -1144,7 +1185,7 @@ awt_event_handler (GdkEvent *event)
default:
break;
}
g_free (obj_ptr);
g_free (event_obj_ptr);
}
gtk_main_do_event (event);