menu: Set up callback with a return function
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 25 Apr 2018 17:07:50 +0000 (19:07 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 25 Apr 2018 17:11:21 +0000 (19:11 +0200)
The function hooked up to the ::key-pressed signal should have
a return value. Pointed out by Peter Bloomfield.

gtk/gtkmenu.c

index 249cbd2e412215565cecad93495c2e6f7164c0c6..c87c8f9df5ce276b51c910c21e34d8c2f334a391 100644 (file)
@@ -235,6 +235,11 @@ static void     gtk_menu_enter             (GtkEventController *controller,
                                             gpointer            user_data);
 static void     gtk_menu_leave             (GtkEventController *controller,
                                             gpointer            user_data);
+static gboolean gtk_menu_key_pressed       (GtkEventControllerKey *controller,
+                                            guint                  keyval,
+                                            guint                  keycode,
+                                            GdkModifierType        state,
+                                            GtkMenu               *menu);
 static void     gtk_menu_scroll_to         (GtkMenu          *menu,
                                             gint              offset);
 static void     gtk_menu_grab_notify       (GtkWidget        *widget,
@@ -1145,8 +1150,8 @@ gtk_menu_init (GtkMenu *menu)
 
   priv->key_controller =
     gtk_event_controller_key_new (GTK_WIDGET (menu));
-  g_signal_connect_swapped (priv->key_controller, "key-pressed",
-                            G_CALLBACK (gtk_menu_stop_navigating_submenu), menu);
+  g_signal_connect (priv->key_controller, "key-pressed",
+                    G_CALLBACK (gtk_menu_key_pressed), menu);
 }
 
 static void
@@ -3481,6 +3486,17 @@ gtk_menu_leave (GtkEventController *controller,
     gtk_menu_handle_scrolling (menu, event->x_root, event->y_root, FALSE, TRUE);
 }
 
+static gboolean
+gtk_menu_key_pressed (GtkEventControllerKey *controller,
+                      guint                  keyval,
+                      guint                  keycode,
+                      GdkModifierType        state,
+                      GtkMenu               *menu)
+{
+  gtk_menu_stop_navigating_submenu (menu);
+  return FALSE;
+}
+
 static gboolean
 pointer_on_menu_widget (GtkMenu *menu,
                         gdouble  x_root,