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 {