Zoom out all panes when opening a dock (#2554)

Fixes
https://linear.app/zed-industries/issue/Z-2051/center-zoom-isnt-unset-when-opening-project-panel

Release Notes:

- Fixed a bug where opening the project panel did not reset the zoom
state of a pane.
This commit is contained in:
Max Brunsfeld 2023-06-01 15:26:46 -07:00 committed by GitHub
commit 0bd9d5b1fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1705,7 +1705,7 @@ impl Workspace {
) {
// If a center pane is zoomed, unzoom it.
for pane in &self.panes {
if pane != &self.active_pane {
if pane != &self.active_pane || dock_to_reveal.is_some() {
pane.update(cx, |pane, cx| pane.set_zoomed(false, cx));
}
}
@ -4351,6 +4351,12 @@ mod tests {
panel
});
let pane = workspace.read_with(cx, |workspace, _| workspace.active_pane().clone());
pane.update(cx, |pane, cx| {
let item = cx.add_view(|_| TestItem::new());
pane.add_item(Box::new(item), true, true, None, cx);
});
// Transfer focus from center to panel
workspace.update(cx, |workspace, cx| {
workspace.toggle_panel_focus::<TestPanel>(cx);
@ -4452,6 +4458,25 @@ mod tests {
assert!(workspace.zoomed.is_some());
assert!(panel.has_focus(cx));
});
// Unzoom and close the panel, zoom the active pane.
panel.update(cx, |panel, cx| panel.set_zoomed(false, cx));
workspace.update(cx, |workspace, cx| {
workspace.toggle_dock(DockPosition::Right, cx)
});
pane.update(cx, |pane, cx| pane.toggle_zoom(&Default::default(), cx));
// Opening a dock unzooms the pane.
workspace.update(cx, |workspace, cx| {
workspace.toggle_dock(DockPosition::Right, cx)
});
workspace.read_with(cx, |workspace, cx| {
let pane = pane.read(cx);
assert!(!pane.is_zoomed());
assert!(pane.has_focus());
assert!(workspace.right_dock().read(cx).is_open());
assert!(workspace.zoomed.is_none());
});
}
#[gpui::test]