diff options
author | Tim Janik <timj@src.gnome.org> | 1998-01-21 09:16:33 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-01-21 09:16:33 +0000 |
commit | 2d42cb955edfd7d90701d0a6a4f5fe3fc2cd3a45 (patch) | |
tree | 7430f46b707a3cae3d9d0b5e35cdd8964d5dab88 /gdk/gdk.c | |
parent | 10be06456194c77d27e642059148479455cd6580 (diff) | |
download | gtk+-2d42cb955edfd7d90701d0a6a4f5fe3fc2cd3a45.tar.gz |
sigh, it wasn't so simple - first correction
-timj
Diffstat (limited to 'gdk/gdk.c')
-rw-r--r-- | gdk/gdk.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -204,8 +204,8 @@ static GdkWindow *button_window[2]; /* The last 2 windows to rec */ static guint button_number[2]; /* The last 2 buttons to be pressed. */ -static gboolean pointer_is_grabbed = FALSE; /* Boolean value of wether the there is - * an active x pointer grab in effect +static GdkWindowPrivate *xgrab_window = NULL; /* Window that currently holds the + * x pointer grab */ #ifdef USE_XIM @@ -1287,7 +1287,7 @@ gdk_pointer_grab (GdkWindow * window, time); if (return_val == GrabSuccess) - pointer_is_grabbed = TRUE; + xgrab_window = window_private; return return_val; } @@ -1314,7 +1314,7 @@ gdk_pointer_ungrab (guint32 time) gdk_input_vtable.ungrab_pointer (time); XUngrabPointer (gdk_display, time); - pointer_is_grabbed = FALSE; + xgrab_window = NULL; } /* @@ -1335,7 +1335,7 @@ gdk_pointer_ungrab (guint32 time) gint gdk_pointer_is_grabbed (void) { - return pointer_is_grabbed; + return xgrab_window != NULL; } /* @@ -2425,6 +2425,9 @@ gdk_event_translate (GdkEvent *event, event->any.type = GDK_UNMAP; event->any.window = window; + if (xgrab_window == window_private) + xgrab_window = NULL; + return_val = window_private && !window_private->destroyed; break; |