wayland: remove duplicate leave events
This commit is contained in:
parent
84d7632341
commit
5a552a4ca2
2 changed files with 1 additions and 16 deletions
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue