[gtk/shortcuts-rebased-again: 163/171] popovermenu: Actually listen to focus change



commit bf56f1a8c563a8f545b72b04259688abd37f0607
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jun 24 02:56:39 2019 +0000

    popovermenu: Actually listen to focus change
    
    As it turns out, capture phase controllers
    don't see any crossing events, so we need to
    use separate controllers for key presses and
    focus change.

 gtk/gtkpopovermenu.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkpopovermenu.c b/gtk/gtkpopovermenu.c
index 846c123e59..d3b586214c 100644
--- a/gtk/gtkpopovermenu.c
+++ b/gtk/gtkpopovermenu.c
@@ -222,10 +222,14 @@ gtk_popover_menu_init (GtkPopoverMenu *popover)
 
   controller = gtk_event_controller_key_new ();
   gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
-  g_signal_connect (controller, "focus-out", G_CALLBACK (focus_out), popover);
   g_signal_connect (controller, "key-pressed", G_CALLBACK (key_pressed), popover);
   gtk_widget_add_controller (GTK_WIDGET (popover), controller);
 
+  controller = gtk_event_controller_key_new ();
+  gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_BUBBLE);
+  g_signal_connect (controller, "focus-out", G_CALLBACK (focus_out), popover);
+  gtk_widget_add_controller (GTK_WIDGET (popover), controller);
+
   /* Trigger mnemonics without Alt */
   controllers = _gtk_widget_list_controllers (GTK_WIDGET (popover), GTK_PHASE_CAPTURE);
   for (l = controllers; l; l = l->next)


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