From cf80feb3dd4d458bc82a7cc023007ad39f3d781e Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Tue, 15 Sep 2009 09:54:34 +0200 Subject: [PATCH] Do not test the event mask of implicit grabs The quartz backend simulates the semantics of XGrabPointer, as a part of this it checks the event mask of the grab. However, implicit grabs on X do not go through XGrabPointer and thus the quartz backend should not check the event mask for these. This fixes various "the UI got stuck" cases. --- gdk/quartz/gdkevents-quartz.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index fc2be1657f..5be38b4941 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -498,7 +498,11 @@ find_window_for_ns_event (NSEvent *nsevent, grab = _gdk_display_get_last_pointer_grab (display); if (grab) { - if ((grab->event_mask & get_event_mask_from_ns_event (nsevent)) == 0) + /* Implicit grabs do not go through XGrabPointer and thus the + * event mask should not be checked. + */ + if (!grab->implicit + && (grab->event_mask & get_event_mask_from_ns_event (nsevent)) == 0) return NULL; if (grab->owner_events)