diff options
-rw-r--r-- | gtk/gtkmain.c | 3 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 9eda5a9f41..950c4995d9 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -1840,10 +1840,13 @@ gtk_main_do_event (GdkEvent *event) if (gtk_invoke_key_snoopers (grab_widget, event)) break; } + /* Catch alt press to enable auto-mnemonics; * menus are handled elsewhere + * FIXME: this does not work with mnemonic modifiers other than Alt */ if ((event->key.keyval == GDK_KEY_Alt_L || event->key.keyval == GDK_KEY_Alt_R) && + ((event->key.state & (gtk_accelerator_get_default_mod_mask ()) & ~(GDK_RELEASE_MASK|GDK_MOD1_MASK)) == 0) && !GTK_IS_MENU_SHELL (grab_widget)) { gboolean auto_mnemonics; diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 04cf5c9ad4..2af5409bdd 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -5947,8 +5947,7 @@ maybe_set_mnemonics_visible (GtkWindow *window) gdk_device_get_state (dev, gtk_widget_get_window (GTK_WIDGET (window)), NULL, &mask); - - if (window->priv->mnemonic_modifier & mask) + if (window->priv->mnemonic_modifier == (mask & gtk_accelerator_get_default_mod_mask ())) { gtk_window_set_mnemonics_visible (window, TRUE); break; |