summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2008-10-14 02:03:46 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-10-14 02:03:46 +0000
commit4806c17f25d9e29fef1958125fd9311ecb830c99 (patch)
treee2ba413a431daca802dcfa92f3ff9a2b7526edcd
parentb89688efd19ab99e44f77046206956fc95fc0264 (diff)
downloadgdk-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--ChangeLog11
-rw-r--r--gtk/gtkwindow.c38
2 files changed, 33 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index be23e1a60..a95208406 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)