From c06529b548f06aab8387c2173226460cdf27f4c1 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Fri, 5 Jul 2024 17:58:45 +0200 Subject: [PATCH] focus: Don't send enter/leave for same surface --- src/shell/focus/target.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/shell/focus/target.rs b/src/shell/focus/target.rs index 9a24af3f..176eff03 100644 --- a/src/shell/focus/target.rs +++ b/src/shell/focus/target.rs @@ -685,6 +685,24 @@ impl KeyboardTarget for KeyboardFocusTarget { } } } + fn replace( + &self, + replaced: ::KeyboardFocus, + seat: &Seat, + data: &mut State, + keys: Vec>, + modifiers: ModifiersState, + serial: Serial, + ) { + if !replaced + .wl_surface() + .is_some_and(|s| Some(s) == self.wl_surface()) + { + KeyboardTarget::leave(&replaced, seat, data, serial); + KeyboardTarget::enter(self, seat, data, keys, serial); + KeyboardTarget::modifiers(self, seat, data, modifiers, serial); + } + } } impl WaylandFocus for KeyboardFocusTarget {