dc9d190ac9
Note the MR comments indicate this might break something else, but that's about multiple touch events so probably less important than 'super doesn't work'.
58 lines
2.2 KiB
Diff
58 lines
2.2 KiB
Diff
From 69ce2cc5cf1f4759afea7fd3429c9f33b6d07919 Mon Sep 17 00:00:00 2001
|
|
From: Carlos Garnacho <carlosg@gnome.org>
|
|
Date: Tue, 8 Aug 2023 16:04:25 +0200
|
|
Subject: [PATCH] backends/native: Fix handling order of key event
|
|
|
|
First create the event with the current xkb modifier mask, then
|
|
update the xkb_state and the modifier mask. This is how it happened
|
|
before commit 2e8d8397081, and how it should stay.
|
|
|
|
Fixes: 2e8d8397081 ("backends/native: Port to new event constructors")
|
|
|
|
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2951
|
|
---
|
|
src/backends/native/meta-seat-impl.c | 20 ++++++++++----------
|
|
1 file changed, 10 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c
|
|
index 0c26647b43..77eb4faac6 100644
|
|
--- a/src/backends/native/meta-seat-impl.c
|
|
+++ b/src/backends/native/meta-seat-impl.c
|
|
@@ -415,16 +415,6 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl,
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
- keycode = meta_xkb_evdev_to_keycode (key);
|
|
-
|
|
- /* We must be careful and not pass multiple releases to xkb, otherwise it gets
|
|
- confused and locks the modifiers */
|
|
- if (state != AUTOREPEAT_VALUE)
|
|
- {
|
|
- changed_state = xkb_state_update_key (seat_impl->xkb, keycode,
|
|
- state ? XKB_KEY_DOWN : XKB_KEY_UP);
|
|
- }
|
|
else
|
|
{
|
|
changed_state = 0;
|
|
@@ -438,6 +428,16 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl,
|
|
seat_impl->button_state,
|
|
time_us, key, state);
|
|
|
|
+ keycode = meta_xkb_evdev_to_keycode (key);
|
|
+
|
|
+ /* We must be careful and not pass multiple releases to xkb, otherwise it gets
|
|
+ confused and locks the modifiers */
|
|
+ if (state != AUTOREPEAT_VALUE)
|
|
+ {
|
|
+ changed_state = xkb_state_update_key (seat_impl->xkb, keycode,
|
|
+ state ? XKB_KEY_DOWN : XKB_KEY_UP);
|
|
+ }
|
|
+
|
|
if (!meta_input_device_native_process_kbd_a11y_event_in_impl (seat_impl->core_keyboard,
|
|
event))
|
|
queue_event (seat_impl, event);
|
|
--
|
|
GitLab
|
|
|