summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2012-01-18 16:27:58 +0000
committerRob Bradford <rob@linux.intel.com>2012-01-18 16:32:44 +0000
commit29641ecd078c279327cbca5a30ca8426089aed5e (patch)
tree8b424e071208e82d8dbd87316740f157d721f960 /gdk
parent1839caa7b7390623792882538e3fca69e00fb594 (diff)
downloadgtk+-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.c8
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])
{