[gtk/wip/matthiasc/shortcut: 102/102] Fix focus in popovers



commit 13bddfd441fe525c765bfde05ef39e85952d1108
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Mar 17 00:53:55 2020 -0400

    Fix focus in popovers
    
    It turns out that we must make shortcuts controllers
    accept events regardless of scope, else we lose Tab
    keypresses in popovers.

 gtk/gtkshortcutmanager.c | 2 ++
 gtk/gtkwidget.c          | 1 +
 2 files changed, 3 insertions(+)
---
diff --git a/gtk/gtkshortcutmanager.c b/gtk/gtkshortcutmanager.c
index 64fdd7ba8e..56fe802bc8 100644
--- a/gtk/gtkshortcutmanager.c
+++ b/gtk/gtkshortcutmanager.c
@@ -43,12 +43,14 @@ gtk_shortcut_manager_create_controllers (GtkWidget *widget)
   model = gtk_concat_model_new (GTK_TYPE_SHORTCUT);
   g_object_set_data_full (G_OBJECT (widget), "gtk-shortcut-manager-bubble", model, g_object_unref);
   controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (model));
+  gtk_event_controller_set_propagation_limit (controller, GTK_LIMIT_NONE);
   gtk_event_controller_set_name (controller, "gtk-shortcut-manager-bubble");
   gtk_widget_add_controller (widget, controller);
 
   model = gtk_concat_model_new (GTK_TYPE_SHORTCUT);
   g_object_set_data_full (G_OBJECT (widget), "gtk-shortcut-manager-capture", model, g_object_unref);
   controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (model));
+  gtk_event_controller_set_propagation_limit (controller, GTK_LIMIT_NONE);
   gtk_event_controller_set_name (controller, "gtk-shortcut-manager-capture");
   gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
   gtk_widget_add_controller (widget, controller);
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 41e0815286..5a9bcb6ccf 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -2470,6 +2470,7 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
   if (g_list_model_get_n_items (G_LIST_MODEL (GTK_WIDGET_CLASS (g_class)->priv->shortcuts)) > 0)
     {
       controller = gtk_shortcut_controller_new_for_model (G_LIST_MODEL (GTK_WIDGET_CLASS 
(g_class)->priv->shortcuts));
+      gtk_event_controller_set_propagation_limit (controller, GTK_LIMIT_NONE);
       gtk_event_controller_set_name (controller, "gtk-widget-class-shortcuts");
       gtk_widget_add_controller (widget, controller);
     }


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