diff --git a/crates/workspace/src/persistence/model.rs b/crates/workspace/src/persistence/model.rs index ff027b6042..e838d22f0d 100644 --- a/crates/workspace/src/persistence/model.rs +++ b/crates/workspace/src/persistence/model.rs @@ -147,14 +147,7 @@ impl SerializedPaneGroup { } else { let pane = pane.upgrade(cx)?; workspace - .update(cx, |workspace, cx| { - workspace.panes.retain(|p| p != &pane); - cx.focus(workspace.panes.last().unwrap()); - if workspace.last_active_center_pane == Some(pane.downgrade()) { - workspace.last_active_center_pane = None; - } - cx.notify(); - }) + .update(cx, |workspace, cx| workspace.force_remove_pane(&pane, cx)) .log_err()?; None } diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 4a6ae57f07..a57cea526b 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -1743,16 +1743,12 @@ impl Workspace { fn remove_pane(&mut self, pane: ViewHandle, cx: &mut ViewContext) { if self.center.remove(&pane).unwrap() { - self.panes.retain(|p| p != &pane); - cx.focus(self.panes.last().unwrap()); + self.force_remove_pane(&pane, cx); self.unfollow(&pane, cx); self.last_leaders_by_pane.remove(&pane.downgrade()); for removed_item in pane.read(cx).items() { self.panes_by_item.remove(&removed_item.id()); } - if self.last_active_center_pane == Some(pane.downgrade()) { - self.last_active_center_pane = None; - } cx.notify(); } else { @@ -2460,16 +2456,20 @@ impl Workspace { } } Member::Pane(pane) => { - self.panes.retain(|p| p != &pane); - cx.focus(self.panes.last().unwrap()); - if self.last_active_center_pane == Some(pane.downgrade()) { - self.last_active_center_pane = None; - } - cx.notify(); - }, + self.force_remove_pane(&pane, cx); + } } } + fn force_remove_pane(&mut self, pane: &ViewHandle, cx: &mut ViewContext) { + self.panes.retain(|p| p != pane); + cx.focus(self.panes.last().unwrap()); + if self.last_active_center_pane == Some(pane.downgrade()) { + self.last_active_center_pane = None; + } + cx.notify(); + } + fn serialize_workspace(&self, cx: &AppContext) { fn serialize_pane_handle( pane_handle: &ViewHandle,