Remove open_item_in_pane

Nathan Sobo , Max Brunsfeld , and Keith Simmons created

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Keith Simmons <keith@the-simmons.net>

Change summary

crates/workspace/src/pane.rs      | 16 ++++++++--------
crates/workspace/src/workspace.rs | 24 +++++++-----------------
2 files changed, 15 insertions(+), 25 deletions(-)

Detailed changes

crates/workspace/src/pane.rs 🔗

@@ -256,16 +256,16 @@ impl Pane {
                 let item = task.await;
                 if let Some(pane) = pane.upgrade(&cx) {
                     if let Some(item) = item.log_err() {
-                        workspace.update(&mut cx, |workspace, cx| {
-                            pane.update(cx, |p, _| p.nav_history.borrow_mut().set_mode(mode));
-                            let item_view = workspace.open_item_in_pane(item, &pane, cx);
-                            pane.update(cx, |p, _| {
-                                p.nav_history.borrow_mut().set_mode(NavigationMode::Normal)
-                            });
-
+                        pane.update(&mut cx, |pane, cx| {
+                            pane.nav_history.borrow_mut().set_mode(mode);
+                            let item = pane.open_item(item, cx);
+                            pane.nav_history
+                                .borrow_mut()
+                                .set_mode(NavigationMode::Normal);
                             if let Some(data) = entry.data {
-                                item_view.navigate(data, cx);
+                                item.navigate(data, cx);
                             }
+                            item
                         });
                     } else {
                         workspace

crates/workspace/src/workspace.rs 🔗

@@ -658,14 +658,12 @@ impl Workspace {
     ) -> Task<Result<Box<dyn ItemViewHandle>, Arc<anyhow::Error>>> {
         let load_task = self.load_path(path, cx);
         let pane = self.active_pane().clone().downgrade();
-        cx.spawn(|this, mut cx| async move {
+        cx.as_mut().spawn(|mut cx| async move {
             let item = load_task.await?;
-            this.update(&mut cx, |this, cx| {
-                let pane = pane
-                    .upgrade(cx)
-                    .ok_or_else(|| anyhow!("could not upgrade pane reference"))?;
-                Ok(this.open_item_in_pane(item, &pane, cx))
-            })
+            let pane = pane
+                .upgrade(&cx)
+                .ok_or_else(|| anyhow!("could not upgrade pane reference"))?;
+            Ok(pane.update(&mut cx, |pane, cx| pane.open_item(item, cx)))
         })
     }
 
@@ -836,16 +834,8 @@ impl Workspace {
         item_view: Box<dyn ItemViewHandle>,
         cx: &mut ViewContext<Self>,
     ) -> Box<dyn ItemViewHandle> {
-        self.open_item_in_pane(item_view, &self.active_pane().clone(), cx)
-    }
-
-    pub fn open_item_in_pane(
-        &mut self,
-        item_view: Box<dyn ItemViewHandle>,
-        pane: &ViewHandle<Pane>,
-        cx: &mut ViewContext<Self>,
-    ) -> Box<dyn ItemViewHandle> {
-        pane.update(cx, |pane, cx| pane.open_item(item_view, cx))
+        self.active_pane()
+            .update(cx, |pane, cx| pane.open_item(item_view, cx))
     }
 
     pub fn open_item_for_project_entry<T, F>(