diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 92014d624227f9e5e9cfe40fb3c28d56210ccf2c..b3904ce44db177af0cbae321663a154ec96fd112 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -2801,10 +2801,17 @@ impl Workspace { .unwrap_or(Origin::Center); let get_last_active_pane = || { - self.last_active_center_pane.as_ref().and_then(|p| { - let p = p.upgrade()?; - (p.read(cx).items_len() != 0).then_some(p) - }) + let pane = self + .last_active_center_pane + .clone() + .unwrap_or_else(|| { + self.panes + .first() + .expect("There must be an active pane") + .downgrade() + }) + .upgrade()?; + (pane.read(cx).items_len() != 0).then_some(pane) }; let try_dock = @@ -2924,6 +2931,10 @@ impl Workspace { self.last_active_center_pane = Some(pane.downgrade()); } + if self.last_active_center_pane.is_none() { + self.last_active_center_pane = Some(pane.downgrade()); + } + self.dismiss_zoomed_items_to_reveal(None, cx); if pane.read(cx).is_zoomed() { self.zoomed = Some(pane.downgrade().into());