summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-04-26 20:50:36 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-04-26 20:50:36 +0200
commitd83c5fcc90763a604e6156e56e23f9ca45b18321 (patch)
tree991cdaf675c75f19f7b30bb403d52d0f93343eba
parent20176d0395294b9eeb7f0e28f1a1a35705fa0888 (diff)
downloadmutter-wip/carlosg/keep-depressed-mods-depressed.tar.gz
clutter: Keep depressed mods across keymap changeswip/carlosg/keep-depressed-mods-depressed
Those are, evidently, depressed. Forgetting about those when the keymap changes does no good to them, nor the stuff we are typing.
-rw-r--r--clutter/clutter/evdev/clutter-device-manager-evdev.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/clutter/clutter/evdev/clutter-device-manager-evdev.c
index bc9549de9..7f253a6be 100644
--- a/clutter/clutter/evdev/clutter-device-manager-evdev.c
+++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c
@@ -2276,6 +2276,7 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev)
ClutterSeatEvdev *seat;
xkb_mod_mask_t latched_mods;
xkb_mod_mask_t locked_mods;
+ xkb_mod_mask_t depressed_mods;
priv = manager_evdev->priv;
@@ -2283,6 +2284,8 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev)
{
seat = iter->data;
+ depressed_mods = xkb_state_serialize_mods (seat->xkb,
+ XKB_STATE_MODS_DEPRESSED);
latched_mods = xkb_state_serialize_mods (seat->xkb,
XKB_STATE_MODS_LATCHED);
locked_mods = xkb_state_serialize_mods (seat->xkb,
@@ -2291,7 +2294,7 @@ clutter_evdev_update_xkb_state (ClutterDeviceManagerEvdev *manager_evdev)
seat->xkb = xkb_state_new (priv->keymap);
xkb_state_update_mask (seat->xkb,
- 0, /* depressed */
+ depressed_mods,
latched_mods,
locked_mods,
0, 0, seat->layout_idx);