submission.rs: Restore active modifiers after changing keymaps
and clear all modifiers when changing layouts. Fixes #373 Part-of: <https://gitlab.gnome.org/World/Phosh/squeekboard/-/merge_requests/598>
This commit is contained in:
@ -296,10 +296,13 @@ impl Submission {
|
|||||||
fn select_keymap(&mut self, idx: usize, time: Timestamp) {
|
fn select_keymap(&mut self, idx: usize, time: Timestamp) {
|
||||||
if self.keymap_idx != Some(idx) {
|
if self.keymap_idx != Some(idx) {
|
||||||
self.keymap_idx = Some(idx);
|
self.keymap_idx = Some(idx);
|
||||||
|
let modifiers = self.modifiers_active.clone();
|
||||||
self.clear_all_modifiers();
|
self.clear_all_modifiers();
|
||||||
self.release_all_virtual_keys(time);
|
self.release_all_virtual_keys(time);
|
||||||
let keymap = &self.keymap_fds[idx];
|
let keymap = &self.keymap_fds[idx];
|
||||||
self.virtual_keyboard.update_keymap(keymap);
|
self.virtual_keyboard.update_keymap(keymap);
|
||||||
|
self.modifiers_active = modifiers;
|
||||||
|
self.update_modifiers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,5 +319,8 @@ impl Submission {
|
|||||||
// However, self.keymap_idx needs to become Option<>
|
// However, self.keymap_idx needs to become Option<>
|
||||||
// in order to force update on new layouts.
|
// in order to force update on new layouts.
|
||||||
self.select_keymap(0, time);
|
self.select_keymap(0, time);
|
||||||
|
|
||||||
|
// Reset modifiers when changing layouts.
|
||||||
|
self.clear_all_modifiers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user