mutter/3162.patch
Adam Williamson dc9d190ac9 Backport #3162 to fix super key not triggering overview
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'.
2023-08-08 08:58:22 -07:00

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