[gtk+] gtkmain: Don't process WM events if there's a grab on another toplevel



commit a6ca56969e85d0f482f86d08abf48aa7ce54012a
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Aug 4 15:49:34 2015 +0200

    gtkmain: Don't process WM events if there's a grab on another toplevel
    
    This is implicitly done for us in the case of grabs on windows from other
    groups, but we must perform this check explicitly for grabs with
    owner_events=True on windows from the same group, in that case the window
    would handle the events as if there was no grab.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=752327

 gtk/gtkmain.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 5640097..25fef1c 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1645,8 +1645,13 @@ gtk_main_do_event (GdkEvent *event)
       (grab_widget && grab_widget != event_widget &&
        !gtk_widget_is_ancestor (event_widget, grab_widget)))
     {
-      if (_gtk_window_check_handle_wm_event (event))
-        goto cleanup;
+      /* Ignore event if we got a grab on another toplevel */
+      if (!grab_widget ||
+          gtk_widget_get_toplevel (event_widget) == gtk_widget_get_toplevel (grab_widget))
+        {
+          if (_gtk_window_check_handle_wm_event (event))
+            goto cleanup;
+        }
     }
 
   /* Find out the topmost widget where captured event propagation



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