From 3a273028ae289b4196e99aa5ff3da5598c9a6925 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 28 Sep 2020 16:03:14 +0200 Subject: backends/x11: Set stage on logical keyboard device 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 --- src/backends/x11/meta-seat-x11.c | 4 ++++ 1 file changed, 4 insertions(+) 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) -- cgit v1.2.1