1
0
Fork 0
forked from wry/wry

wayland: remove duplicate leave events

This commit is contained in:
Julian Orth 2024-07-02 16:47:28 +02:00
parent 84d7632341
commit 5a552a4ca2
2 changed files with 1 additions and 16 deletions

View file

@ -149,10 +149,6 @@ impl NodeSeatState {
self.kb_foci.iter().for_each(|(_, s)| f(s)); self.kb_foci.iter().for_each(|(_, s)| f(s));
} }
pub fn for_each_pointer_focus<F: FnMut(Rc<WlSeatGlobal>)>(&self, mut f: F) {
self.pointer_foci.iter().for_each(|(_, s)| f(s));
}
pub fn destroy_node(&self, node: &dyn Node) { pub fn destroy_node(&self, node: &dyn Node) {
self.destroy_node2(node, true); self.destroy_node2(node, true);
} }
@ -173,11 +169,11 @@ impl NodeSeatState {
while let Some((_, seat)) = self.pointer_foci.pop() { while let Some((_, seat)) = self.pointer_foci.pop() {
let mut ps = seat.pointer_stack.borrow_mut(); let mut ps = seat.pointer_stack.borrow_mut();
while let Some(last) = ps.pop() { while let Some(last) = ps.pop() {
last.node_on_leave(&seat);
if last.node_id() == node_id { if last.node_id() == node_id {
break; break;
} }
last.node_seat_state().leave(&seat); last.node_seat_state().leave(&seat);
last.node_on_leave(&seat);
} }
seat.pointer_stack_modified.set(true); seat.pointer_stack_modified.set(true);
seat.state.tree_changed(); seat.state.tree_changed();

View file

@ -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) { pub fn set_visible(&self, visible: bool) {
if self.visible.replace(visible) == visible { if self.visible.replace(visible) == visible {
return; return;
@ -1287,9 +1280,6 @@ impl WlSurface {
} }
} }
} }
if !visible {
self.send_seat_release_events();
}
self.seat_state.set_visible(self, visible); self.seat_state.set_visible(self, visible);
} }
@ -1318,7 +1308,6 @@ impl WlSurface {
data.focus_node.remove(&seat); data.focus_node.remove(&seat);
} }
} }
self.send_seat_release_events();
self.seat_state.destroy_node(self); self.seat_state.destroy_node(self);
if self.visible.get() { if self.visible.get() {
self.client.state.damage(); self.client.state.damage();