summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-03-15 14:48:05 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-03-15 14:48:05 -0400
commit1ce5494ffdd76c8ece9b894ee91e984cb31d8522 (patch)
tree835f124ac3b3dc2c072d1773af585f0bc6c7248a
parentc7df3b9e9790012e6c5fbad6a4f4519bcf75561f (diff)
downloadgtk+-1ce5494ffdd76c8ece9b894ee91e984cb31d8522.tar.gz
wayland: Pass layout information in key events
We were always setting group to 0, causing accelerator interpretation to always go off the first configured layout, not the active one. Fixes: #1825
-rw-r--r--gdk/wayland/gdkdevice-wayland.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 3d5ca60a8d..67bd322340 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -2195,6 +2195,7 @@ deliver_key_event (GdkWaylandSeat *seat,
struct xkb_keymap *xkb_keymap;
GdkKeymap *keymap;
xkb_keysym_t sym;
+ int layout;
guint delay, interval, timeout;
gint64 begin_time, now;
@@ -2207,6 +2208,7 @@ deliver_key_event (GdkWaylandSeat *seat,
xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
sym = xkb_state_key_get_one_sym (xkb_state, key);
+ layout = xkb_state_key_get_layout (xkb_state, key);
if (sym == XKB_KEY_NoSymbol)
return;
@@ -2220,7 +2222,7 @@ deliver_key_event (GdkWaylandSeat *seat,
gdk_event_set_seat (event, GDK_SEAT (seat));
event->key.time = time_;
event->key.state = device_get_modifiers (seat->master_pointer);
- event->key.group = 0;
+ event->key.group = layout;
event->key.hardware_keycode = key;
gdk_event_set_scancode (event, key);
event->key.keyval = sym;