From f9a399961eea1e8385c068f52256d84fa35cfd3c Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 29 Jan 2003 21:02:03 +0000 Subject: [PATCH] Make up from the menu bar go to the end of the submenu. (#96114, Ian Wed Jan 29 15:43:56 2003 Owen Taylor * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): Make up from the menu bar go to the end of the submenu. (#96114, Ian Peters.) * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): Only do the select-but-not-activate stuff if the menu is already active. Otherwise, just activate. (#101690, Arvind Samptur) --- ChangeLog | 11 +++++++++++ ChangeLog.pre-2-10 | 11 +++++++++++ ChangeLog.pre-2-4 | 11 +++++++++++ ChangeLog.pre-2-6 | 11 +++++++++++ ChangeLog.pre-2-8 | 11 +++++++++++ gtk/gtkmenuitem.c | 12 ++++++------ gtk/gtkmenushell.c | 14 ++++++++++++++ 7 files changed, 75 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad1d56a1b2..6f9c52b25e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Wed Jan 29 15:43:56 2003 Owen Taylor + + * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): + Make up from the menu bar go to the end of the submenu. + (#96114, Ian Peters.) + + * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): + Only do the select-but-not-activate stuff if the + menu is already active. Otherwise, just activate. + (#101690, Arvind Samptur) + Tue Jan 28 15:18:24 2003 Owen Taylor * autogen.sh (have_automake): Fix version in complaint diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index ad1d56a1b2..6f9c52b25e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,14 @@ +Wed Jan 29 15:43:56 2003 Owen Taylor + + * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): + Make up from the menu bar go to the end of the submenu. + (#96114, Ian Peters.) + + * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): + Only do the select-but-not-activate stuff if the + menu is already active. Otherwise, just activate. + (#101690, Arvind Samptur) + Tue Jan 28 15:18:24 2003 Owen Taylor * autogen.sh (have_automake): Fix version in complaint diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index ad1d56a1b2..6f9c52b25e 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,14 @@ +Wed Jan 29 15:43:56 2003 Owen Taylor + + * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): + Make up from the menu bar go to the end of the submenu. + (#96114, Ian Peters.) + + * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): + Only do the select-but-not-activate stuff if the + menu is already active. Otherwise, just activate. + (#101690, Arvind Samptur) + Tue Jan 28 15:18:24 2003 Owen Taylor * autogen.sh (have_automake): Fix version in complaint diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index ad1d56a1b2..6f9c52b25e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,14 @@ +Wed Jan 29 15:43:56 2003 Owen Taylor + + * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): + Make up from the menu bar go to the end of the submenu. + (#96114, Ian Peters.) + + * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): + Only do the select-but-not-activate stuff if the + menu is already active. Otherwise, just activate. + (#101690, Arvind Samptur) + Tue Jan 28 15:18:24 2003 Owen Taylor * autogen.sh (have_automake): Fix version in complaint diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index ad1d56a1b2..6f9c52b25e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,14 @@ +Wed Jan 29 15:43:56 2003 Owen Taylor + + * gtk/gtkmenushell.c (gtk_real_menu_shell_move_current): + Make up from the menu bar go to the end of the submenu. + (#96114, Ian Peters.) + + * gtk/gtkmenuitem.c (gtk_menu_item_mnemonic_activate): + Only do the select-but-not-activate stuff if the + menu is already active. Otherwise, just activate. + (#101690, Arvind Samptur) + Tue Jan 28 15:18:24 2003 Owen Taylor * autogen.sh (have_automake): Fix version in complaint diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 48437b7155..413d44a14b 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -801,13 +801,13 @@ static gboolean gtk_menu_item_mnemonic_activate (GtkWidget *widget, gboolean group_cycling) { - if (group_cycling) + if (group_cycling && + widget->parent && + GTK_IS_MENU_SHELL (widget->parent) && + GTK_MENU_SHELL (widget->parent)->active) { - if (widget->parent && - GTK_IS_MENU_SHELL (widget->parent)) - gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), - widget); - + gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), + widget); } else g_signal_emit (widget, menu_item_signals[ACTIVATE_ITEM], 0); diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index b72c04d217..4b3fba1a46 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -1070,6 +1070,20 @@ gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell, gtk_menu_shell_select_submenu_first (parent_menu_shell); } } + /* If there is no parent and the submenu is in the opposite direction + * to the menu, then make the PARENT direction wrap around to + * the bottom of the submenu. + */ + else if (menu_shell->active_menu_item && + _gtk_menu_item_is_selectable (menu_shell->active_menu_item) && + GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) + { + GtkMenuShell *submenu = GTK_MENU_SHELL (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu); + + if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != + GTK_MENU_SHELL_GET_CLASS (submenu)->submenu_placement) + _gtk_menu_shell_select_last (submenu, TRUE); + } break; case GTK_MENU_DIR_CHILD: