From 5a552a4ca2e3661ea76fc68c24c7dd15c4ff92a9 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 2 Jul 2024 16:47:28 +0200 Subject: [PATCH] wayland: remove duplicate leave events --- src/ifs/wl_seat/event_handling.rs | 6 +----- src/ifs/wl_surface.rs | 11 ----------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/ifs/wl_seat/event_handling.rs b/src/ifs/wl_seat/event_handling.rs index cb3920f9..f64ab341 100644 --- a/src/ifs/wl_seat/event_handling.rs +++ b/src/ifs/wl_seat/event_handling.rs @@ -149,10 +149,6 @@ impl NodeSeatState { self.kb_foci.iter().for_each(|(_, s)| f(s)); } - pub fn for_each_pointer_focus)>(&self, mut f: F) { - self.pointer_foci.iter().for_each(|(_, s)| f(s)); - } - pub fn destroy_node(&self, node: &dyn Node) { self.destroy_node2(node, true); } @@ -173,11 +169,11 @@ impl NodeSeatState { while let Some((_, seat)) = self.pointer_foci.pop() { let mut ps = seat.pointer_stack.borrow_mut(); while let Some(last) = ps.pop() { + last.node_on_leave(&seat); if last.node_id() == node_id { break; } last.node_seat_state().leave(&seat); - last.node_on_leave(&seat); } seat.pointer_stack_modified.set(true); seat.state.tree_changed(); diff --git a/src/ifs/wl_surface.rs b/src/ifs/wl_surface.rs index 954fdc7b..9bb58ca4 100644 --- a/src/ifs/wl_surface.rs +++ b/src/ifs/wl_surface.rs @@ -1261,13 +1261,6 @@ impl WlSurface { } } - fn send_seat_release_events(&self) { - self.seat_state - .for_each_pointer_focus(|s| s.leave_surface(self)); - self.seat_state - .for_each_kb_focus(|s| s.unfocus_surface(self)); - } - pub fn set_visible(&self, visible: bool) { if self.visible.replace(visible) == visible { return; @@ -1287,9 +1280,6 @@ impl WlSurface { } } } - if !visible { - self.send_seat_release_events(); - } self.seat_state.set_visible(self, visible); } @@ -1318,7 +1308,6 @@ impl WlSurface { data.focus_node.remove(&seat); } } - self.send_seat_release_events(); self.seat_state.destroy_node(self); if self.visible.get() { self.client.state.damage();