[gtk] menu: Set up callback with a return function



commit 77f4204bf435c6d498e7556717e2df6077c91dcd
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Apr 25 19:07:50 2018 +0200

    menu: Set up callback with a return function
    
    The function hooked up to the ::key-pressed signal should have
    a return value. Pointed out by Peter Bloomfield.

 gtk/gtkmenu.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index 249cbd2e41..c87c8f9df5 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -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,


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