summaryrefslogtreecommitdiff
path: root/gdk/gdkdisplay.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-08-27 13:30:20 +0200
committerAlexander Larsson <alexl@redhat.com>2009-08-27 13:32:01 +0200
commit1932f32ef201268272bff03c590766d1448ddcc8 (patch)
tree3592b8259900f1f78c84b1868425fef05b919f34 /gdk/gdkdisplay.c
parent41054425b96d7af47005c1c7a12ae6445ab55b09 (diff)
downloadgtk+-1932f32ef201268272bff03c590766d1448ddcc8.tar.gz
Correct generation of broken grabs
We send a broken grab when a *parent* gets unmapped, not when a child gets unmapped!
Diffstat (limited to 'gdk/gdkdisplay.c')
-rw-r--r--gdk/gdkdisplay.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
index 2d094886ea..d22ff00c77 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
@@ -1136,7 +1136,9 @@ _gdk_display_has_pointer_grab (GdkDisplay *display,
return NULL;
}
-/* Returns true if last grab was ended */
+/* Returns true if last grab was ended
+ * If if_child is non-NULL, end the grab only if the grabbed
+ * window is the same as if_child or a descendant of it */
gboolean
_gdk_display_end_pointer_grab (GdkDisplay *display,
gulong serial,
@@ -1154,7 +1156,7 @@ _gdk_display_end_pointer_grab (GdkDisplay *display,
grab = l->data;
if (grab &&
(if_child == NULL ||
- _gdk_window_event_parent_of (grab->window, if_child)))
+ _gdk_window_event_parent_of (if_child, grab->window)))
{
grab->serial_end = serial;
grab->implicit_ungrab = implicit;