1
0
Fork 0
forked from wry/wry

seat: drop xkb_state before reverting pointer to default

This commit is contained in:
Julian Orth 2024-09-17 23:04:34 +02:00
parent 2a1d6a8ba8
commit 7729704e42

View file

@ -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| {