diff options
Diffstat (limited to 'gtk/gtkmenubar.c')
-rw-r--r-- | gtk/gtkmenubar.c | 78 |
1 files changed, 3 insertions, 75 deletions
diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c index 3b5f7752e7..46aca862e2 100644 --- a/gtk/gtkmenubar.c +++ b/gtk/gtkmenubar.c @@ -656,8 +656,8 @@ 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 * +_gtk_menu_bar_get_viewable_menu_bars (GtkWindow *window) { GList *menu_bars; GList *viewable_menu_bars = NULL; @@ -691,76 +691,12 @@ set_menu_bars (GtkWindow *window, g_object_set_data (G_OBJECT (window), I_("gtk-menu-bar-list"), menubars); } -static gboolean -window_key_press_handler (GtkWidget *widget, - GdkEventKey *event, - gpointer data) -{ - gchar *accel = NULL; - gboolean retval = FALSE; - - g_object_get (gtk_widget_get_settings (widget), - "gtk-menu-bar-accel", &accel, - NULL); - - if (accel && *accel) - { - guint keyval = 0; - GdkModifierType mods = 0; - - gtk_accelerator_parse (accel, &keyval, &mods); - - if (keyval == 0) - g_warning ("Failed to parse menu bar accelerator '%s'\n", accel); - - /* FIXME this is wrong, needs to be in the global accel resolution - * thing, to properly consider i18n etc., but that probably requires - * AccelGroup changes etc. - */ - if (event->keyval == keyval && - ((event->state & gtk_accelerator_get_default_mod_mask ()) == - (mods & gtk_accelerator_get_default_mod_mask ()))) - { - GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (widget)); - GList *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); - - _gtk_menu_shell_set_keyboard_mode (menu_shell, TRUE); - gtk_menu_shell_select_first (menu_shell, FALSE); - - g_list_free (menubars); - - retval = TRUE; - } - } - } - - g_free (accel); - - return retval; -} - static void add_to_window (GtkWindow *window, GtkMenuBar *menubar) { GList *menubars = get_menu_bars (window); - if (!menubars) - { - g_signal_connect (window, - "key-press-event", - G_CALLBACK (window_key_press_handler), - NULL); - } - set_menu_bars (window, g_list_prepend (menubars, menubar)); } @@ -771,14 +707,6 @@ remove_from_window (GtkWindow *window, GList *menubars = get_menu_bars (window); menubars = g_list_remove (menubars, menubar); - - if (!menubars) - { - g_signal_handlers_disconnect_by_func (window, - window_key_press_handler, - NULL); - } - set_menu_bars (window, menubars); } @@ -816,7 +744,7 @@ _gtk_menu_bar_cycle_focus (GtkMenuBar *menubar, if (gtk_widget_is_toplevel (toplevel)) { - GList *tmp_menubars = get_viewable_menu_bars (GTK_WINDOW (toplevel)); + GList *tmp_menubars = _gtk_menu_bar_get_viewable_menu_bars (GTK_WINDOW (toplevel)); GList *menubars; GList *current; |