diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-06 19:36:23 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-06 19:36:23 +0300 |
| commit | d859cf21f565e23503c6ba351c62c32c33153d77 (patch) | |
| tree | 27bac56973e903da8d81820948c2a771e8d42ffe /src/app/mod.rs | |
| parent | cbe5c150baa147649912bb1bfad40522dc3c25f3 (diff) | |
fix: keep sidebar width stable and persist user resize
Diffstat (limited to 'src/app/mod.rs')
| -rw-r--r-- | src/app/mod.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs index f06bbb19..6d677b0c 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -157,12 +157,13 @@ impl App { let render_dirty = Arc::new(AtomicBool::new(false)); // Try to restore previous session - let (workspaces, active, selected, agent_panel_scope) = if no_session { + let (workspaces, active, selected, agent_panel_scope, sidebar_width) = if no_session { ( Vec::new(), None, 0, state::AgentPanelScope::CurrentWorkspace, + config.ui.sidebar_width, ) } else if let Some(snap) = crate::persist::load() { let ws = crate::persist::restore( @@ -175,12 +176,24 @@ impl App { ); if ws.is_empty() { info!("session file found but no workspaces restored"); - (Vec::new(), None, 0, snap.agent_panel_scope) + ( + Vec::new(), + None, + 0, + snap.agent_panel_scope, + snap.sidebar_width.unwrap_or(config.ui.sidebar_width), + ) } else { info!(count = ws.len(), "session restored"); let active = snap.active.filter(|&i| i < ws.len()); let selected = snap.selected.min(ws.len().saturating_sub(1)); - (ws, active, selected, snap.agent_panel_scope) + ( + ws, + active, + selected, + snap.agent_panel_scope, + snap.sidebar_width.unwrap_or(config.ui.sidebar_width), + ) } } else { ( @@ -188,6 +201,7 @@ impl App { None, 0, state::AgentPanelScope::CurrentWorkspace, + config.ui.sidebar_width, ) }; @@ -247,8 +261,9 @@ impl App { toast: None, prefix_code, prefix_mods, - sidebar_width: config.ui.sidebar_width, - sidebar_width_auto: true, + default_sidebar_width: config.ui.sidebar_width, + sidebar_width, + sidebar_width_auto: false, sidebar_collapsed: false, agent_panel_scope, confirm_close: config.ui.confirm_close, @@ -434,6 +449,7 @@ impl App { self.state.active, self.state.selected, self.state.agent_panel_scope, + self.state.sidebar_width, ); crate::persist::save(&snap); } |
