Refactor and fix format

Mikayla Maki created

Change summary

crates/workspace/src/persistence/model.rs |  9 +--------
crates/workspace/src/workspace.rs         | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 20 deletions(-)

Detailed changes

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
                 }

crates/workspace/src/workspace.rs 🔗

@@ -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>,