summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-09-28 16:03:14 +0200
committerRobert Mader <robert.mader@posteo.de>2020-09-29 21:26:26 +0000
commit3a273028ae289b4196e99aa5ff3da5598c9a6925 (patch)
tree45e7687d225575dd2159a88e77f0e714c35c66c1
parent533882ab771afb049c7205fd8214fe655cd5fa48 (diff)
downloadmutter-wip/carlosg/fix-im-x11.tar.gz
backends/x11: Set stage on logical keyboard devicewip/carlosg/fix-im-x11
Like it's done for the pointer in other places. Without a stage assigned, some bits (like IM handling) may end up with events ignored, and misbehave. Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1413
-rw-r--r--src/backends/x11/meta-seat-x11.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backends/x11/meta-seat-x11.c b/src/backends/x11/meta-seat-x11.c
index 17d2a9696..39885230a 100644
--- a/src/backends/x11/meta-seat-x11.c
+++ b/src/backends/x11/meta-seat-x11.c
@@ -1801,6 +1801,10 @@ meta_seat_x11_translate_event (MetaSeatX11 *seat,
GINT_TO_POINTER (xev->deviceid));
clutter_event_set_device (event, device);
+ if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_LOGICAL &&
+ stage != NULL)
+ _clutter_input_device_set_stage (device, stage);
+
/* XXX keep this in sync with the evdev device manager */
n = print_keysym (event->key.keyval, buffer, sizeof (buffer));
if (n == 0)