[gtk/wip/matthiasc/shortcut-4: 127/139] popovermenu: Make mnemonics work without Alt



commit c4fb68e2b45cd53a5d3311caf25dd11e1bb91620
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Mar 24 00:00:43 2020 -0400

    popovermenu: Make mnemonics work without Alt
    
    This is expected menu behavior.

 gtk/gtkpopovermenu.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
---
diff --git a/gtk/gtkpopovermenu.c b/gtk/gtkpopovermenu.c
index edfbdb078c..23375dd0c1 100644
--- a/gtk/gtkpopovermenu.c
+++ b/gtk/gtkpopovermenu.c
@@ -34,6 +34,8 @@
 #include "gtktypebuiltins.h"
 #include "gtkmodelbuttonprivate.h"
 #include "gtkpopovermenubar.h"
+#include "gtkshortcutmanager.h"
+#include "gtkshortcutcontroller.h"
 
 
 /**
@@ -199,6 +201,7 @@ gtk_popover_menu_init (GtkPopoverMenu *popover)
 {
   GtkWidget *stack;
   GtkEventController *controller;
+  GList *controllers, *l;
 
   stack = gtk_stack_new ();
   gtk_stack_set_vhomogeneous (GTK_STACK (stack), FALSE);
@@ -217,6 +220,16 @@ gtk_popover_menu_init (GtkPopoverMenu *popover)
   controller = gtk_event_controller_motion_new ();
   g_signal_connect (controller, "leave", G_CALLBACK (leave_cb), popover);
   gtk_widget_add_controller (GTK_WIDGET (popover), controller);
+
+  controllers = gtk_widget_list_controllers (GTK_WIDGET (popover), GTK_PHASE_CAPTURE);
+  for (l = controllers; l; l = l->next)
+    {
+      controller = l->data;
+      if (GTK_IS_SHORTCUT_CONTROLLER (controller) &&
+          strcmp (gtk_event_controller_get_name (controller), "gtk-shortcut-manager-capture") == 0)
+        gtk_shortcut_controller_set_mnemonics_modifiers (GTK_SHORTCUT_CONTROLLER (controller), 0);
+    }
+  g_list_free (controllers);
 }
 
 static void


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