[gtk+] Do not test the event mask of implicit grabs



commit cf80feb3dd4d458bc82a7cc023007ad39f3d781e
Author: Kristian Rietveld <kris gtk org>
Date:   Tue Sep 15 09:54:34 2009 +0200

    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 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index fc2be16..5be38b4 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)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]