summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-10-08 23:06:07 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-10-09 07:43:40 -0400
commit115ed005e615d5046c50e801f850c2490fe7b339 (patch)
tree49c4225803079a9191d1e7a2fe1624f815ea4148
parent6a0704aeb4edb0d43010270348c8de1d27e4453a (diff)
downloadgtk+-115ed005e615d5046c50e801f850c2490fe7b339.tar.gz
Send focus events to the root
We are not propagating focus change events, and that is the only place where we are listening for focus change events. If GtkWindow does not see focus-in events for its popovers, we end up with inadvertendly inactive windows. Fixes: #3240
-rw-r--r--gtk/gtkmain.c7
1 files 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: