diff options
author | Matthias Clasen <mclasen@redhat.com> | 2008-10-14 02:03:46 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2008-10-14 02:03:46 +0000 |
commit | 4806c17f25d9e29fef1958125fd9311ecb830c99 (patch) | |
tree | e2ba413a431daca802dcfa92f3ff9a2b7526edcd | |
parent | b89688efd19ab99e44f77046206956fc95fc0264 (diff) | |
download | gdk-pixbuf-4806c17f25d9e29fef1958125fd9311ecb830c99.tar.gz |
Bug 552318 – menubar mnemonics consumed even when
2008-10-13 Matthias Clasen <mclasen@redhat.com>
Bug 552318 – menubar mnemonics consumed even when
gtk-enable-mnemonics=false
* gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic
entries block accelerator activation when gtk-enable-mnemonics is
FALSE. Problem reported by Andreas Moog.
svn path=/branches/gtk-2-14/; revision=21649
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 38 |
2 files changed, 33 insertions, 16 deletions
@@ -1,3 +1,14 @@ +2008-10-13 Matthias Clasen <mclasen@redhat.com> + + Merged to trunk: + + Bug 552318 – menubar mnemonics consumed even when + gtk-enable-mnemonics=false + + * gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic + entries block accelerator activation when gtk-enable-mnemonics is + FALSE. Problem reported by Andreas Moog. + 2008-10-10 Simos Xenitellis <simos@gnome.org> Merged from trunk: diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index a276ed64d..f83b4513a 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -8028,6 +8028,8 @@ gtk_window_activate_key (GtkWindow *window, { GtkKeyHash *key_hash; GtkWindowKeyEntry *found_entry = NULL; + gboolean enable_mnemonics; + gboolean enable_accels; g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); g_return_val_if_fail (event != NULL, FALSE); @@ -8036,39 +8038,43 @@ gtk_window_activate_key (GtkWindow *window, if (key_hash) { + GSList *tmp_list; GSList *entries = _gtk_key_hash_lookup (key_hash, event->hardware_keycode, event->state, gtk_accelerator_get_default_mod_mask (), event->group); - GSList *tmp_list; + + g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)), + "gtk-enable-mnemonics", &enable_mnemonics, + "gtk-enable-accels", &enable_accels, + NULL); 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 (enable_mnemonics) + { + found_entry = entry; + break; + } + } + else + { + if (enable_accels && !found_entry) + { + found_entry = entry; + } + } } - - if (!found_entry && entries) - found_entry = entries->data; g_slist_free (entries); } if (found_entry) { - gboolean enable_mnemonics; - gboolean enable_accels; - - g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)), - "gtk-enable-mnemonics", &enable_mnemonics, - "gtk-enable-accels", &enable_accels, - NULL); - if (found_entry->is_mnemonic) { if (enable_mnemonics) |