seat: revert to default pointer owner when ESC is pressed
This commit is contained in:
parent
9a7e6c2518
commit
e4e090d3a2
1 changed files with 12 additions and 9 deletions
|
|
@ -39,7 +39,7 @@ use {
|
||||||
isnt::std_1::primitive::{IsntSlice2Ext, IsntSliceExt},
|
isnt::std_1::primitive::{IsntSlice2Ext, IsntSliceExt},
|
||||||
jay_config::keyboard::{
|
jay_config::keyboard::{
|
||||||
mods::{Modifiers, CAPS, NUM, RELEASE},
|
mods::{Modifiers, CAPS, NUM, RELEASE},
|
||||||
syms::KeySym,
|
syms::{KeySym, SYM_Escape},
|
||||||
},
|
},
|
||||||
smallvec::SmallVec,
|
smallvec::SmallVec,
|
||||||
std::{cell::RefCell, collections::hash_map::Entry, rc::Rc},
|
std::{cell::RefCell, collections::hash_map::Entry, rc::Rc},
|
||||||
|
|
@ -346,7 +346,7 @@ impl WlSeatGlobal {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn key_event<F>(
|
pub(super) fn key_event<F>(
|
||||||
&self,
|
self: &Rc<Self>,
|
||||||
time_usec: u64,
|
time_usec: u64,
|
||||||
key: u32,
|
key: u32,
|
||||||
key_state: KeyState,
|
key_state: KeyState,
|
||||||
|
|
@ -375,14 +375,17 @@ impl WlSeatGlobal {
|
||||||
let mut shortcuts = SmallVec::<[_; 1]>::new();
|
let mut shortcuts = SmallVec::<[_; 1]>::new();
|
||||||
let new_mods;
|
let new_mods;
|
||||||
{
|
{
|
||||||
if !self.state.lock.locked.get() {
|
let mut mods = xkb_state.mods().mods_effective & !(CAPS.0 | NUM.0);
|
||||||
let mut mods = xkb_state.mods().mods_effective & !(CAPS.0 | NUM.0);
|
if state == wl_keyboard::RELEASED {
|
||||||
if state == wl_keyboard::RELEASED {
|
mods |= RELEASE.0;
|
||||||
mods |= RELEASE.0;
|
}
|
||||||
|
let scs = &*self.shortcuts.borrow();
|
||||||
|
let keysyms = xkb_state.unmodified_keysyms(key);
|
||||||
|
for &sym in keysyms {
|
||||||
|
if sym == SYM_Escape.0 && mods == 0 {
|
||||||
|
self.pointer_owner.revert_to_default(self);
|
||||||
}
|
}
|
||||||
let scs = &*self.shortcuts.borrow();
|
if !self.state.lock.locked.get() {
|
||||||
let keysyms = xkb_state.unmodified_keysyms(key);
|
|
||||||
for &sym in keysyms {
|
|
||||||
if let Some(key_mods) = scs.get(&sym) {
|
if let Some(key_mods) = scs.get(&sym) {
|
||||||
for (key_mods, mask) in key_mods {
|
for (key_mods, mask) in key_mods {
|
||||||
if mods & mask == key_mods {
|
if mods & mask == key_mods {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue