diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-12-10 21:38:48 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-12-10 21:38:48 +0000 |
commit | f5c7b5d23606f9d39f571e70409e593d05656b3c (patch) | |
tree | 34e7e5f59b0c72e0132e42ff0883c4445e9698f0 /gtk/gtkwindow.c | |
parent | 50d8e17fc3e3e9cdef0f4c7b581c98015bd5a06c (diff) | |
download | gtk+-f5c7b5d23606f9d39f571e70409e593d05656b3c.tar.gz |
Revert the patch which added no-alt mnemonics, since it interfers badly
2004-12-10 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkwindow.c: Revert the patch which added no-alt
mnemonics, since it interfers badly with menus. (#160911,
Jonathan Blandford)
Diffstat (limited to 'gtk/gtkwindow.c')
-rw-r--r-- | gtk/gtkwindow.c | 110 |
1 files changed, 30 insertions, 80 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 3ee6c0ca44..41c64cb5b0 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -277,9 +277,6 @@ static void gtk_window_notify_keys_changed (GtkWindow *window); static GtkKeyHash *gtk_window_get_key_hash (GtkWindow *window); static void gtk_window_free_key_hash (GtkWindow *window); -static gboolean gtk_window_activate_key_after (GtkWindow *window, - GdkEventKey *event); - static GSList *toplevel_list = NULL; static GHashTable *mnemonic_hash_table = NULL; static GtkBinClass *parent_class = NULL; @@ -4585,10 +4582,6 @@ gtk_window_key_press_event (GtkWidget *widget, if (!handled) handled = GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event); - /* Fallback mnemonic handling if nothing else took the key */ - if (!handled) - handled = gtk_window_activate_key_after (window, event); - return handled; } @@ -7423,21 +7416,6 @@ gtk_window_free_key_hash (GtkWindow *window) } } -static GtkWindowKeyEntry * -find_mnemonic_entry (GSList *entries) -{ - GSList *tmp_list; - - for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next) - { - GtkWindowKeyEntry *entry = tmp_list->data; - if (entry->is_mnemonic) - return entry; - } - - return NULL; -} - /** * gtk_window_activate_key: * @window: a #GtkWindow @@ -7454,20 +7432,39 @@ gboolean gtk_window_activate_key (GtkWindow *window, GdkEventKey *event) { - GtkKeyHash *key_hash = gtk_window_get_key_hash (window); + GtkKeyHash *key_hash = g_object_get_data (G_OBJECT (window), "gtk-window-key-hash"); GtkWindowKeyEntry *found_entry = NULL; - GSList *entries = _gtk_key_hash_lookup (key_hash, - event->hardware_keycode, - event->state, - gtk_accelerator_get_default_mod_mask (), - event->group); - - found_entry = find_mnemonic_entry (entries); - if (!found_entry && entries) - found_entry = entries->data; + if (!key_hash) + { + gtk_window_keys_changed (window); + key_hash = g_object_get_data (G_OBJECT (window), "gtk-window-key-hash"); + } - g_slist_free (entries); + if (key_hash) + { + GSList *entries = _gtk_key_hash_lookup (key_hash, + event->hardware_keycode, + event->state, + gtk_accelerator_get_default_mod_mask (), + event->group); + GSList *tmp_list; + + for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next) + { + GtkWindowKeyEntry *entry = tmp_list->data; + if (entry->is_mnemonic) + { + found_entry = entry; + break; + } + } + + if (!found_entry && entries) + found_entry = entries->data; + + g_slist_free (entries); + } if (found_entry) { @@ -7480,53 +7477,6 @@ gtk_window_activate_key (GtkWindow *window, return FALSE; } -/** - * gtk_window_activate_key_after: - * @window: a #GtkWindow - * @event: a #GdkEventKey - * - * Activates fallback mnemonic and accelerator handling for this - * #GtkWindow. This is normally called by the default - * ::key_press_event handler for toplevel windows after all other key - * press handling for the widget does not handle the key, however in some - * cases it may be useful to call this directly when overriding the - * standard key handling for a toplevel window. Currently, what - * this function does is check for the user pressing a mnemonic key - * unmodified; if that key is not consumed previously, then it will - * activate the mnemonic. - * - * Return value: %TRUE if a mnemonic or accelerator was found and activated. - * - * Since: 2.6 - **/ -static gboolean -gtk_window_activate_key_after (GtkWindow *window, - GdkEventKey *event) -{ - GtkKeyHash *key_hash = gtk_window_get_key_hash (window); - GtkWindowKeyEntry *found_entry = NULL; - GSList *entries; - - if (window->mnemonic_modifier == 0 || - ((gtk_accelerator_get_default_mod_mask () & event->state) != 0)) - return FALSE; - - entries = _gtk_key_hash_lookup (key_hash, - event->hardware_keycode, - event->state | window->mnemonic_modifier, - gtk_accelerator_get_default_mod_mask (), - event->group); - - found_entry = find_mnemonic_entry (entries); - - g_slist_free (entries); - - if (found_entry) - return gtk_window_mnemonic_activate (window, found_entry->keyval, found_entry->modifiers); - else - return FALSE; -} - static void window_update_has_focus (GtkWindow *window) { |