summaryrefslogtreecommitdiff
path: root/gdk/gdk.c
diff options
context:
space:
mode:
authorTim Janik <timj@src.gnome.org>1998-01-21 09:16:33 +0000
committerTim Janik <timj@src.gnome.org>1998-01-21 09:16:33 +0000
commit2d42cb955edfd7d90701d0a6a4f5fe3fc2cd3a45 (patch)
tree7430f46b707a3cae3d9d0b5e35cdd8964d5dab88 /gdk/gdk.c
parent10be06456194c77d27e642059148479455cd6580 (diff)
downloadgtk+-2d42cb955edfd7d90701d0a6a4f5fe3fc2cd3a45.tar.gz
sigh, it wasn't so simple - first correction
-timj
Diffstat (limited to 'gdk/gdk.c')
-rw-r--r--gdk/gdk.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gdk/gdk.c b/gdk/gdk.c
index 5e1351ebf1..f87f1a2af8 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -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;