Change summary
crates/workspace/src/persistence/model.rs | 9 +--------
crates/workspace/src/workspace.rs | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 20 deletions(-)
Detailed changes
@@ -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
}
@@ -1743,16 +1743,12 @@ impl Workspace {
fn remove_pane(&mut self, pane: ViewHandle<Pane>, cx: &mut ViewContext<Self>) {
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<Pane>, cx: &mut ViewContext<Workspace>) {
+ 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<Pane>,