diff --git a/src/tree.rs b/src/tree.rs index 0a696deb..5aeddbba 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -212,6 +212,10 @@ pub trait Node: 'static { fn node_location(&self) -> Option; fn node_layer(&self) -> NodeLayerLink; + fn node_output_id(&self) -> Option { + self.node_output().map(|o| o.id) + } + fn node_child_title_changed(self: Rc, child: &dyn Node, title: &str) { let _ = child; let _ = title; diff --git a/src/tree/output.rs b/src/tree/output.rs index 3455861b..329b0f32 100644 --- a/src/tree/output.rs +++ b/src/tree/output.rs @@ -990,10 +990,11 @@ impl OutputNode { fn visit_children(&self, visitor: &mut dyn NodeVisitor) { self.node_visit_children(visitor); - for ws in self.workspaces.iter() { - for stacked in ws.stacked.iter() { - stacked.deref().clone().node_visit(visitor); + for stacked in self.state.root.stacked.iter() { + if stacked.node_output_id() != Some(self.id) { + continue; } + stacked.deref().clone().node_visit(visitor); } }