[gtk/wip/carlosg/for-master] gtk/main: Reset active state on grab broken only if implicit




commit 5b4ac5456eb18405140033668e19e24f91f36543
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Nov 14 10:48:04 2020 +0100

    gtk/main: Reset active state on grab broken only if implicit
    
    An implicit grab means some button is down, reset the active state
    only in that case when we get a grab broken event.
    
    Avoids active state accounting warnings when we do get active grabs
    broken (e.g. after selecting a menu option).

 gtk/gtkmain.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 72941e8620..6f7ca2337c 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1506,10 +1506,13 @@ handle_pointing_event (GdkEvent *event)
     case GDK_TOUCHPAD_SWIPE:
       break;
     case GDK_GRAB_BROKEN:
-      target = gtk_window_lookup_effective_pointer_focus_widget (toplevel,
-                                                                 device,
-                                                                 sequence);
-      set_widget_active_state (target, TRUE);
+      if (gdk_grab_broken_event_get_implicit (event))
+        {
+          target = gtk_window_lookup_effective_pointer_focus_widget (toplevel,
+                                                                     device,
+                                                                     sequence);
+          set_widget_active_state (target, TRUE);
+        }
       break;
     default:
       g_assert_not_reached ();


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