diff --git a/crates/oa-desktop/src/app/saved_removal.rs b/crates/oa-desktop/src/app/saved_removal.rs index a9d5bf1d..4f6e8fbc 100644 --- a/crates/oa-desktop/src/app/saved_removal.rs +++ b/crates/oa-desktop/src/app/saved_removal.rs @@ -250,6 +250,23 @@ impl App { Ok(_) => { self.selected_node = None; self.behavior.diagram.placement = None; + // A selected machine can own the current saved view. Retire + // those UI references only after its transaction succeeds. + if self + .behavior + .active_owner + .is_some_and(|id| !self.project().contains(id)) + { + self.behavior.active_owner = None; + } + if self + .behavior + .diagram + .diagram + .is_some_and(|id| !self.project().diagrams.contains_key(&id)) + { + self.behavior.diagram = Default::default(); + } if self.page == Page::Behavior && let Some(machine) = machine.filter(|id| self.project().contains(*id)) {