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) {
 | 
			
		||||
        if self.keymap_idx != Some(idx) {
 | 
			
		||||
            self.keymap_idx = Some(idx);
 | 
			
		||||
            let modifiers = self.modifiers_active.clone();
 | 
			
		||||
            self.clear_all_modifiers();
 | 
			
		||||
            self.release_all_virtual_keys(time);
 | 
			
		||||
            let keymap = &self.keymap_fds[idx];
 | 
			
		||||
            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<>
 | 
			
		||||
        // in order to force update on new layouts.
 | 
			
		||||
        self.select_keymap(0, time);
 | 
			
		||||
 | 
			
		||||
        // Reset modifiers when changing layouts.
 | 
			
		||||
        self.clear_all_modifiers();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user