diff options
author | Owen Taylor <otaylor@src.gnome.org> | 2002-06-12 20:42:44 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-06-12 20:42:44 +0000 |
commit | a01645c84f290bb265a784f89dd133f70650f369 (patch) | |
tree | f47c6179421fede6ddbda700558eebcccc019ad9 /gtk/gtkmenubar.c | |
parent | e9ed9a7fa16123d4ddac9e22f17d47c75defa488 (diff) | |
download | gtk+-a01645c84f290bb265a784f89dd133f70650f369.tar.gz |
ed Jun 12 16:34:13 2002 Owen Taylor <otaylor@redhat.com>
* 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)
Diffstat (limited to 'gtk/gtkmenubar.c')
-rw-r--r-- | gtk/gtkmenubar.c | 41 |
1 files changed, 37 insertions, 4 deletions
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) { |