[mutter/wip/carlosg/fix-im-x11-3.36] backends/x11: Set stage on logical keyboard device




commit 3536ad08c4de9666e426524e6e9ee18dbba93f2a
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Sep 28 16:03:14 2020 +0200

    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
    
    (cherry-picked from commit 3a273028ae289b4196e99aa5ff3da5598c9a6925)

 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 efd5b39afb..6f0db3a7f7 100644
--- a/src/backends/x11/meta-seat-x11.c
+++ b/src/backends/x11/meta-seat-x11.c
@@ -1805,6 +1805,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_MASTER &&
+            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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]