diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index 5d346279f0fa3e425dca6b7b9db1dd2ddef50cdb..7a7b73199e35fa90169ba3b248651c1136410605 100644 --- a/crates/workspace/src/pane.rs +++ b/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 diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 464eecd307d21207021e70d0d7c74a7695376e52..9692a8c90030b5d3e0b89456f2b465f9ec436468 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -658,14 +658,12 @@ impl Workspace { ) -> Task, Arc>> { 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, cx: &mut ViewContext, ) -> Box { - self.open_item_in_pane(item_view, &self.active_pane().clone(), cx) - } - - pub fn open_item_in_pane( - &mut self, - item_view: Box, - pane: &ViewHandle, - cx: &mut ViewContext, - ) -> Box { - 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(