summaryrefslogtreecommitdiff
path: root/gtk/gtkmenubar.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@src.gnome.org>2002-06-12 20:42:44 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-06-12 20:42:44 +0000
commita01645c84f290bb265a784f89dd133f70650f369 (patch)
treef47c6179421fede6ddbda700558eebcccc019ad9 /gtk/gtkmenubar.c
parente9ed9a7fa16123d4ddac9e22f17d47c75defa488 (diff)
downloadgdk-pixbuf-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.c41
1 files changed, 37 insertions, 4 deletions
diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c
index 47975af2c..5b2a54619 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)
{