stack: Remember previous position during focus navigation

This commit is contained in:
Victoria Brekenfeld 2025-02-24 21:43:16 +01:00 committed by Victoria Brekenfeld
parent e6f563d04e
commit e116f20396
6 changed files with 137 additions and 73 deletions

View file

@ -22,7 +22,7 @@ use crate::{
tiling::{NodeDesc, SwapWindowGrab, TilingLayout},
},
zoom::ZoomState,
SeatExt, Trigger,
LastModifierChange, SeatExt, Trigger,
},
utils::{float::NextDown, prelude::*, quirks::workspace_overview_is_open},
wayland::{
@ -219,6 +219,7 @@ impl State {
let serial = SERIAL_COUNTER.next_serial();
let time = Event::time_msec(&event);
let keyboard = seat.get_keyboard().unwrap();
let previous_modifiers = keyboard.modifier_state();
if let Some((action, pattern)) = keyboard
.input(
self,
@ -227,6 +228,15 @@ impl State {
serial,
time,
|data, modifiers, handle| {
if previous_modifiers != *modifiers {
*seat
.user_data()
.get::<LastModifierChange>()
.unwrap()
.0
.lock()
.unwrap() = Some(serial);
}
Self::filter_keyboard_input(
data, &event, &seat, modifiers, handle, serial,
)