]> Pileus Git - ~andy/gtk/commitdiff
Handle accelerators involving virtual modifiers better
authorMatthias Clasen <mclasen@redhat.com>
Mon, 17 Aug 2009 17:38:06 +0000 (13:38 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 17 Aug 2009 17:46:30 +0000 (13:46 -0400)
The previous code would trigger on an unmodified 'S' key for a
'Super+S' accel. The current code avoids that at the cost of breaking
combinations like 'Mod4+Super+S' which are too exotic to worry about...
Bug 591526

gtk/gtkkeyhash.c

index 3de8830ebe63c9760dc8cc31940964d44d1f6e4b..298f94c5d6d14e02df5ef0fb5d4424258792e224 100644 (file)
@@ -420,8 +420,8 @@ _gtk_key_hash_lookup (GtkKeyHash      *key_hash,
          xmods = GDK_MOD2_MASK|GDK_MOD3_MASK|GDK_MOD4_MASK|GDK_MOD5_MASK;
          vmods = GDK_SUPER_MASK|GDK_HYPER_MASK|GDK_META_MASK;
 
-         if ((entry->modifiers & ~consumed_modifiers & mask & ~vmods) == (state & ~consumed_modifiers & mask & ~vmods) ||
-             (entry->modifiers & ~consumed_modifiers & mask & ~xmods) == (state & ~consumed_modifiers & mask & ~xmods))
+         if ((entry->modifiers & ~consumed_modifiers & mask) == (state & ~consumed_modifiers & mask & ~vmods) ||
+             (entry->modifiers & ~consumed_modifiers & mask) == (state & ~consumed_modifiers & mask & ~xmods))
            {
              gint i;
 
@@ -430,7 +430,7 @@ _gtk_key_hash_lookup (GtkKeyHash      *key_hash,
                  GTK_NOTE (KEYBINDINGS,
                            g_message ("  found exact match, keyval = %u, modifiers = 0x%04x",
                                       entry->keyval, entry->modifiers));
-                 
+
                  if (!have_exact)
                    {
                      g_slist_free (results);