]> Pileus Git - ~andy/gtk/commitdiff
Return a boolean indicating whether an item in the submenu was selected.
authorMatthias Clasen <mclasen@redhat.com>
Tue, 28 Dec 2004 05:33:27 +0000 (05:33 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 28 Dec 2004 05:33:27 +0000 (05:33 +0000)
2004-12-28  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first):
Return a boolean indicating whether an item in the submenu
was selected.
(gtk_real_menu_shell_move_current): When going in child
direction, don't get stuck at completely insensitive
submenus.  (#162055, Billy Biggs)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkmenushell.c

index faf595caf209d1f2cbd0306b94b494d6e377899e..262f321d86a58f74e923952cd8ef77dc0f83c303 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-12-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first): 
+       Return a boolean indicating whether an item in the submenu
+       was selected.
+       (gtk_real_menu_shell_move_current): When going in child 
+       direction, don't get stuck at completely insensitive 
+       submenus.  (#162055, Billy Biggs)       
+
 2004-12-27  Matthias Clasen  <mclasen@redhat.com>
 
        Make the clipboard image API more robust (#162357, 
index faf595caf209d1f2cbd0306b94b494d6e377899e..262f321d86a58f74e923952cd8ef77dc0f83c303 100644 (file)
@@ -1,3 +1,12 @@
+2004-12-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first): 
+       Return a boolean indicating whether an item in the submenu
+       was selected.
+       (gtk_real_menu_shell_move_current): When going in child 
+       direction, don't get stuck at completely insensitive 
+       submenus.  (#162055, Billy Biggs)       
+
 2004-12-27  Matthias Clasen  <mclasen@redhat.com>
 
        Make the clipboard image API more robust (#162357, 
index faf595caf209d1f2cbd0306b94b494d6e377899e..262f321d86a58f74e923952cd8ef77dc0f83c303 100644 (file)
@@ -1,3 +1,12 @@
+2004-12-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first): 
+       Return a boolean indicating whether an item in the submenu
+       was selected.
+       (gtk_real_menu_shell_move_current): When going in child 
+       direction, don't get stuck at completely insensitive 
+       submenus.  (#162055, Billy Biggs)       
+
 2004-12-27  Matthias Clasen  <mclasen@redhat.com>
 
        Make the clipboard image API more robust (#162357, 
index faf595caf209d1f2cbd0306b94b494d6e377899e..262f321d86a58f74e923952cd8ef77dc0f83c303 100644 (file)
@@ -1,3 +1,12 @@
+2004-12-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first): 
+       Return a boolean indicating whether an item in the submenu
+       was selected.
+       (gtk_real_menu_shell_move_current): When going in child 
+       direction, don't get stuck at completely insensitive 
+       submenus.  (#162055, Billy Biggs)       
+
 2004-12-27  Matthias Clasen  <mclasen@redhat.com>
 
        Make the clipboard image API more robust (#162357, 
index 9d067fe3a2fdab573fb4ba90e255ab80aade2134..2618cc48394dccd496f915b68c8929a715e24e7c 100644 (file)
@@ -159,7 +159,7 @@ static GtkWidget *gtk_menu_shell_get_item    (GtkMenuShell      *menu_shell,
 static GType    gtk_menu_shell_child_type  (GtkContainer      *container);
 static void gtk_menu_shell_real_select_item  (GtkMenuShell      *menu_shell,
                                              GtkWidget         *menu_item);
-static void gtk_menu_shell_select_submenu_first (GtkMenuShell   *menu_shell); 
+static gboolean gtk_menu_shell_select_submenu_first (GtkMenuShell   *menu_shell); 
 
 static void gtk_real_menu_shell_move_current (GtkMenuShell      *menu_shell,
                                              GtkMenuDirectionType direction);
@@ -1062,7 +1062,7 @@ _gtk_menu_shell_select_last (GtkMenuShell *menu_shell,
     gtk_menu_shell_select_item (menu_shell, to_select);
 }
 
-static void
+static gboolean
 gtk_menu_shell_select_submenu_first (GtkMenuShell     *menu_shell)
 {
   GtkMenuItem *menu_item;
@@ -1073,7 +1073,11 @@ gtk_menu_shell_select_submenu_first (GtkMenuShell     *menu_shell)
     {
       _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item));
       gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE);
+      if (GTK_MENU_SHELL (menu_item->submenu)->active_menu_item)
+       return TRUE;
     }
+
+  return FALSE;
 }
 
 static void
@@ -1145,28 +1149,27 @@ gtk_real_menu_shell_move_current (GtkMenuShell      *menu_shell,
          _gtk_menu_item_is_selectable (menu_shell->active_menu_item) &&
          GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu)
        {
-         gtk_menu_shell_select_submenu_first (menu_shell);
+         if (gtk_menu_shell_select_submenu_first (menu_shell))
+           break;
        }
-      else
+
+      /* Try to find a menu running the opposite direction */
+      while (parent_menu_shell && 
+            (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement ==
+             GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement))
        {
-         /* Try to find a menu running the opposite direction */
-         while (parent_menu_shell && 
-                (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement ==
-                 GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement))
-            {
-              GtkWidget *tmp_widget = parent_menu_shell->parent_menu_shell;
-
-              if (tmp_widget)
-                parent_menu_shell = GTK_MENU_SHELL (tmp_widget);
-              else
-                parent_menu_shell = NULL;
-            }
-
-         if (parent_menu_shell)
-           {
-             gtk_menu_shell_move_selected (parent_menu_shell, 1);
-             gtk_menu_shell_select_submenu_first (parent_menu_shell);
-           }
+         GtkWidget *tmp_widget = parent_menu_shell->parent_menu_shell;
+         
+         if (tmp_widget)
+           parent_menu_shell = GTK_MENU_SHELL (tmp_widget);
+         else
+           parent_menu_shell = NULL;
+       }
+      
+      if (parent_menu_shell)
+       {
+         gtk_menu_shell_move_selected (parent_menu_shell, 1);
+         gtk_menu_shell_select_submenu_first (parent_menu_shell);
        }
       break;