window: Use widget facilities to sort focus menubars
authorTimm Bäder <mail@baedert.org>
Sat, 17 Mar 2018 09:58:06 +0000 (10:58 +0100)
committerTimm Bäder <mail@baedert.org>
Sat, 17 Mar 2018 11:09:30 +0000 (12:09 +0100)
gtk/gtkwindow.c

index 203f638ad20c7b77f2a1f5d33ad6f015b1e3613e..1d0b95ef187459feafed3b7159cbed5888faf6d0 100644 (file)
@@ -10152,10 +10152,11 @@ gtk_window_activate_menubar (GtkWindow   *window,
       ((event->state & gtk_accelerator_get_default_mod_mask ()) ==
        (mods & gtk_accelerator_get_default_mod_mask ())))
     {
-      GList *tmp_menubars;
-      GList *menubars;
+      GList *tmp_menubars, *l;
+      GPtrArray *menubars;
       GtkMenuShell *menu_shell;
       GtkWidget *focus;
+      GtkWidget *first;
 
       focus = gtk_window_get_focus (window);
 
@@ -10168,19 +10169,21 @@ gtk_window_activate_menubar (GtkWindow   *window,
       if (tmp_menubars == NULL)
         return FALSE;
 
-      menubars = _gtk_container_focus_sort (GTK_CONTAINER (window), tmp_menubars,
-                                            GTK_DIR_TAB_FORWARD, NULL);
+      menubars = g_ptr_array_sized_new (g_list_length (tmp_menubars));;
+      for (l = tmp_menubars; l; l = l->next)
+        g_ptr_array_add (menubars, l->data);
+
       g_list_free (tmp_menubars);
 
-      if (menubars == NULL)
-        return FALSE;
+      gtk_widget_focus_sort (GTK_WIDGET (window), GTK_DIR_TAB_FORWARD, menubars);
 
-      menu_shell = GTK_MENU_SHELL (menubars->data);
+      first = g_ptr_array_index (menubars, 0);
+      menu_shell = GTK_MENU_SHELL (first);
 
       _gtk_menu_shell_set_keyboard_mode (menu_shell, TRUE);
       gtk_menu_shell_select_first (menu_shell, FALSE);
 
-      g_list_free (menubars);
+      g_ptr_array_free (menubars, TRUE);
 
       return TRUE;
     }