summaryrefslogtreecommitdiff
path: root/gtk/gtkmenubar.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkmenubar.c')
-rw-r--r--gtk/gtkmenubar.c78
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;