diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 6338c6fcbd..a81174020b 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -2947,9 +2947,7 @@ impl Workspace { status_bar.set_active_pane(&pane, cx); }); if self.active_pane != pane { - self.active_pane = pane.clone(); - self.active_item_path_changed(cx); - self.last_active_center_pane = Some(pane.downgrade()); + self.set_active_pane(&pane, cx); } if self.last_active_center_pane.is_none() { @@ -2972,6 +2970,12 @@ impl Workspace { cx.notify(); } + fn set_active_pane(&mut self, pane: &View, cx: &mut ViewContext) { + self.active_pane = pane.clone(); + self.active_item_path_changed(cx); + self.last_active_center_pane = Some(pane.downgrade()); + } + fn handle_panel_focused(&mut self, cx: &mut ViewContext) { self.update_active_view_for_followers(cx); } @@ -4263,12 +4267,11 @@ impl Workspace { // Swap workspace center group workspace.center = PaneGroup::with_root(center_group); - workspace.last_active_center_pane = active_pane.as_ref().map(|p| p.downgrade()); if let Some(active_pane) = active_pane { - workspace.active_pane = active_pane; + workspace.set_active_pane(&active_pane, cx); cx.focus_self(); } else { - workspace.active_pane = workspace.center.first_pane().clone(); + workspace.set_active_pane(&workspace.center.first_pane(), cx); } }