seat: drop xkb_state before reverting pointer to default
This commit is contained in:
parent
2a1d6a8ba8
commit
7729704e42
1 changed files with 7 additions and 1 deletions
|
|
@ -811,9 +811,10 @@ impl WlSeatGlobal {
|
||||||
}
|
}
|
||||||
let scs = &*self.shortcuts.borrow();
|
let scs = &*self.shortcuts.borrow();
|
||||||
let keysyms = xkb_state.unmodified_keysyms(key);
|
let keysyms = xkb_state.unmodified_keysyms(key);
|
||||||
|
let mut revert_pointer_to_default = false;
|
||||||
for &sym in keysyms {
|
for &sym in keysyms {
|
||||||
if sym == SYM_Escape.0 && mods == 0 {
|
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 !self.state.lock.locked.get() {
|
||||||
if let Some(key_mods) = scs.get(&sym) {
|
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);
|
new_mods = xkb_state.update(key, xkb_dir);
|
||||||
}
|
}
|
||||||
self.state.for_each_seat_tester(|t| {
|
self.state.for_each_seat_tester(|t| {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue