workspace: Persist centered layout across project switches (#32299)
vipex
created 6 months ago
Closes #32297
Changes:
- Added restoration of `workspace.centered_layout` from
`serialized.centered_layout`
- Ensures the centered layout state persists across project switches
Release Notes:
- Fixed centered layout not persisting when switching between projects
Change summary
crates/workspace/src/workspace.rs | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
Detailed changes
@@ -1399,15 +1399,23 @@ impl Workspace {
.await;
}
let window = if let Some(window) = requesting_window {
+ let centered_layout = serialized_workspace
+ .as_ref()
+ .map(|w| w.centered_layout)
+ .unwrap_or(false);
+
cx.update_window(window.into(), |_, window, cx| {
window.replace_root(cx, |window, cx| {
- Workspace::new(
+ let mut workspace = Workspace::new(
Some(workspace_id),
project_handle.clone(),
app_state.clone(),
window,
cx,
- )
+ );
+
+ workspace.centered_layout = centered_layout;
+ workspace
});
})?;
window
@@ -7051,6 +7059,11 @@ async fn open_ssh_project_inner(
Workspace::new(Some(workspace_id), project, app_state.clone(), window, cx);
workspace.set_serialized_ssh_project(serialized_ssh_project);
workspace.update_history(cx);
+
+ if let Some(ref serialized) = serialized_workspace {
+ workspace.centered_layout = serialized.centered_layout;
+ }
+
workspace
});
})?;