summaryrefslogtreecommitdiff
path: root/gtk/gtkpopover.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-06-07 14:09:01 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-06-21 12:50:57 +0200
commita5414bc404b2ab4d73d3b544b60e95418633846f (patch)
tree7d6e3922d60edaa2be7c9880898ea27746a67402 /gtk/gtkpopover.c
parent1d97b5fd3ccb351133ed4d36f3df8cdd48c45dd2 (diff)
downloadgtk+-a5414bc404b2ab4d73d3b544b60e95418633846f.tar.gz
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.
Diffstat (limited to 'gtk/gtkpopover.c')
-rw-r--r--gtk/gtkpopover.c8
1 files changed, 7 insertions, 1 deletions
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);
}
}