From 7729704e421254ffbd9607282afa19cb68c908a8 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 17 Sep 2024 23:04:34 +0200 Subject: [PATCH] seat: drop xkb_state before reverting pointer to default --- src/ifs/wl_seat/event_handling.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ifs/wl_seat/event_handling.rs b/src/ifs/wl_seat/event_handling.rs index e47cb4f1..753df5fc 100644 --- a/src/ifs/wl_seat/event_handling.rs +++ b/src/ifs/wl_seat/event_handling.rs @@ -811,9 +811,10 @@ impl WlSeatGlobal { } let scs = &*self.shortcuts.borrow(); let keysyms = xkb_state.unmodified_keysyms(key); + let mut revert_pointer_to_default = false; for &sym in keysyms { if sym == SYM_Escape.0 && mods == 0 { - self.pointer_owner.revert_to_default(self); + revert_pointer_to_default = true; } if !self.state.lock.locked.get() { if let Some(key_mods) = scs.get(&sym) { @@ -829,6 +830,11 @@ impl WlSeatGlobal { } } } + if revert_pointer_to_default { + drop(xkb_state); + self.pointer_owner.revert_to_default(self); + xkb_state = xkb_state_rc.borrow_mut(); + } new_mods = xkb_state.update(key, xkb_dir); } self.state.for_each_seat_tester(|t| {