[gtk/matthiasc/for-master: 1/4] Send focus events always to the root




commit 1f4b7620ef43393f5508c54112fa970ffd7ebb0a
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Oct 8 23:06:07 2020 -0400

    Send focus events always to the root
    
    That is the only place where we are listening
    for focus change events, and we need GtkWindow
    to also see focus in events for its popovers,
    otherwise, we end up with inadvertendly inactive
    windows.
    
    Fixes: #3240

 gtk/gtkmain.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 10780b7684..bffb4cfa94 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1648,8 +1648,11 @@ gtk_main_do_event (GdkEvent *event)
       break;
 
     case GDK_FOCUS_CHANGE:
-      if (!_gtk_widget_captured_event (target_widget, event, target_widget))
-        gtk_widget_event (target_widget, event, target_widget);
+      {
+        GtkWidget *root = GTK_WIDGET (gtk_widget_get_root (target_widget));
+        if (!_gtk_widget_captured_event (root, event, root))
+          gtk_widget_event (root, event, root);
+      }
       break;
 
     case GDK_KEY_PRESS:


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