From a5414bc404b2ab4d73d3b544b60e95418633846f Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 7 Jun 2018 14:09:01 +0200 Subject: [PATCH] gtkpopover: Fix key navigation This has been broken since we switched key event delivery to follow the same semantics than pointer/touch. There, GTK+ grabs will influence the topmost widget during event delivery, rendering the toplevel unable to handle key navigation. The toplevel must handle those key events in an explicit manner then. We don't render the keyboard focus rectangle yet, but I assume that's something else. --- gtk/gtkpopover.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index a520f235ed..3263f06775 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -293,7 +293,13 @@ key_controller_key_pressed (GtkEventControllerKey *key, focus = gtk_window_get_focus (GTK_WINDOW (toplevel)); if (focus && gtk_widget_is_ancestor (focus, GTK_WIDGET (popover))) - return gtk_event_controller_key_forward (key, focus); + { + if (gtk_event_controller_key_forward (key, focus)) + return TRUE; + } + + /* Piggyback on the toplevel to have it handle key navigation */ + return gtk_event_controller_key_forward (key, toplevel); } } -- 2.30.2