]> Pileus Git - ~andy/gtk/commitdiff
wayland: Update modifiers handling to match new semantics
authorRob Bradford <rob@linux.intel.com>
Wed, 18 Jan 2012 16:27:58 +0000 (16:27 +0000)
committerRob Bradford <rob@linux.intel.com>
Wed, 18 Jan 2012 16:32:44 +0000 (16:32 +0000)
Due to changes in the behaviour of the virtual modifiers around MOD1 the
implementation of the map_virtual_modifiers vfunc was mangling the modifiers
and making keybindings not work correctly.

This change updates the implementation to match the X11 implementation's
behaviour.

gdk/wayland/gdkkeys-wayland.c

index 55c95e35dcfa18d21c714d253c8b0cb3e113584d..d49be2f8583d1d4ef22cac404e134a5be41ad8fc 100644 (file)
@@ -515,12 +515,10 @@ gdk_wayland_keymap_add_virtual_modifiers (GdkKeymap       *keymap,
 
   wayland_keymap = GDK_WAYLAND_KEYMAP (keymap);
 
-  for (i = 3; i < 8; i++)
+  for (i = 4; i < 8; i++)
     {
       if ((1 << i) & *state)
        {
-         if (wayland_keymap->modmap[i] & GDK_MOD1_MASK)
-           *state |= GDK_MOD1_MASK;
          if (wayland_keymap->modmap[i] & GDK_SUPER_MASK)
            *state |= GDK_SUPER_MASK;
          if (wayland_keymap->modmap[i] & GDK_HYPER_MASK)
@@ -540,7 +538,7 @@ gdk_wayland_keymap_map_virtual_modifiers (GdkKeymap       *keymap,
   };
   int i, j;
   GdkWaylandKeymap *wayland_keymap;
-  gboolean retval;
+  gboolean retval = TRUE;
 
   wayland_keymap = GDK_WAYLAND_KEYMAP (keymap);
 
@@ -548,7 +546,7 @@ gdk_wayland_keymap_map_virtual_modifiers (GdkKeymap       *keymap,
     {
       if (*state & vmods[j])
        {
-         for (i = 3; i < 8; i++)
+         for (i = 4; i < 8; i++)
            {
              if (wayland_keymap->modmap[i] & vmods[j])
                {