Fix zoomed dock closing on window reactivation (#46972)

Mikayla Maki and Claude Opus 4.5 created

Fixes https://github.com/zed-industries/zed/issues/46953

This bug fix cost $10

Release Notes:

- N/A

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

Change summary

crates/workspace/src/workspace.rs | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

Detailed changes

crates/workspace/src/workspace.rs 🔗

@@ -4372,7 +4372,21 @@ impl Workspace {
             self.last_active_center_pane = Some(pane.downgrade());
         }
 
-        self.dismiss_zoomed_items_to_reveal(None, window, cx);
+        // If this pane is in a dock, preserve that dock when dismissing zoomed items.
+        // This prevents the dock from closing when focus events fire during window activation.
+        let dock_to_preserve = self.all_docks().iter().find_map(|dock| {
+            let dock_read = dock.read(cx);
+            if let Some(panel) = dock_read.active_panel()
+                && let Some(dock_pane) = panel.pane(cx)
+                && dock_pane == pane
+            {
+                Some(dock_read.position())
+            } else {
+                None
+            }
+        });
+
+        self.dismiss_zoomed_items_to_reveal(dock_to_preserve, window, cx);
         if pane.read(cx).is_zoomed() {
             self.zoomed = Some(pane.downgrade().into());
         } else {