diff --git a/ChangeLog b/ChangeLog index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d639ea5410..86f5e7ec5b 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Wed Jun 12 16:34:13 2002 Owen Taylor + + * gtk/gtkmenubar.c: When fetching the menubars for + the window for F10 handling, only add viewable menu + bars. (Apparently, people sometimes put menu bars + in notebook pages!) (Tim Janik, #82627) + Wed Jun 12 16:21:38 2002 Owen Taylor * gtk/gtkcheckbutton.c (gtk_check_button_size_allocate): diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c index 47975af2c8..5b2a546198 100644 --- a/gtk/gtkmenubar.c +++ b/gtk/gtkmenubar.c @@ -372,6 +372,34 @@ get_menu_bars (GtkWindow *window) return g_object_get_data (G_OBJECT (window), "gtk-menu-bar-list"); } +static GList * +get_viewable_menu_bars (GtkWindow *window) +{ + GList *menu_bars; + GList *viewable_menu_bars = NULL; + + for (menu_bars = get_menu_bars (window); + menu_bars; + menu_bars = menu_bars->next) + { + GtkWidget *widget = menu_bars->data; + gboolean viewable = TRUE; + + while (widget) + { + if (!GTK_WIDGET_MAPPED (widget)) + viewable = FALSE; + + widget = widget->parent; + } + + if (viewable) + viewable_menu_bars = g_list_prepend (viewable_menu_bars, menu_bars->data); + } + + return g_list_reverse (viewable_menu_bars); +} + static void set_menu_bars (GtkWindow *window, GList *menubars) @@ -410,10 +438,13 @@ window_key_press_handler (GtkWidget *widget, ((event->state & gtk_accelerator_get_default_mod_mask ()) == (mods & gtk_accelerator_get_default_mod_mask ()))) { - GList *menubars = get_menu_bars (GTK_WINDOW (widget)); + GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (widget)); + GList *menubars; - menubars = _gtk_container_focus_sort (GTK_CONTAINER (widget), menubars, + menubars = _gtk_container_focus_sort (GTK_CONTAINER (widget), tmp_menubars, GTK_DIR_TAB_FORWARD, NULL); + g_list_free (tmp_menubars); + if (menubars) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (menubars->data); @@ -504,12 +535,14 @@ _gtk_menu_bar_cycle_focus (GtkMenuBar *menubar, if (GTK_WIDGET_TOPLEVEL (toplevel)) { - GList *menubars = get_menu_bars (GTK_WINDOW (toplevel)); + GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (toplevel)); + GList *menubars; GList *current; GtkMenuBar *new; - menubars = _gtk_container_focus_sort (GTK_CONTAINER (toplevel), menubars, + menubars = _gtk_container_focus_sort (GTK_CONTAINER (toplevel), tmp_menubars, dir, GTK_WIDGET (menubar)); + g_list_free (tmp_menubars); if (menubars) {