diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-03-15 14:48:05 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-03-15 14:48:05 -0400 |
commit | 1ce5494ffdd76c8ece9b894ee91e984cb31d8522 (patch) | |
tree | 835f124ac3b3dc2c072d1773af585f0bc6c7248a | |
parent | c7df3b9e9790012e6c5fbad6a4f4519bcf75561f (diff) | |
download | gtk+-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.c | 4 |
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; |