diff options
author | Rob Bradford <rob@linux.intel.com> | 2012-01-18 16:27:58 +0000 |
---|---|---|
committer | Rob Bradford <rob@linux.intel.com> | 2012-01-18 16:32:44 +0000 |
commit | 29641ecd078c279327cbca5a30ca8426089aed5e (patch) | |
tree | 8b424e071208e82d8dbd87316740f157d721f960 /gdk | |
parent | 1839caa7b7390623792882538e3fca69e00fb594 (diff) | |
download | gtk+-29641ecd078c279327cbca5a30ca8426089aed5e.tar.gz |
wayland: Update modifiers handling to match new semantics
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.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/wayland/gdkkeys-wayland.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/gdk/wayland/gdkkeys-wayland.c b/gdk/wayland/gdkkeys-wayland.c index 55c95e35dc..d49be2f858 100644 --- a/gdk/wayland/gdkkeys-wayland.c +++ b/gdk/wayland/gdkkeys-wayland.c @@ -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]) { |