diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-30 14:54:21 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-30 14:54:21 +0300 |
| commit | 55684493890b4f67c73ea07b5af5911ec1b4d80e (patch) | |
| tree | 60d84536c377bc9a124c11a4b02f9e6da854caba /src/ui.rs | |
| parent | ca93e6e2511d13b7041504e0665fff2d7a402c28 (diff) | |
refactor sidebar status rollup and preserve pane order
Diffstat (limited to 'src/ui.rs')
| -rw-r--r-- | src/ui.rs | 24 |
1 files changed, 6 insertions, 18 deletions
@@ -176,13 +176,8 @@ fn compute_sidebar_width(app: &AppState) -> u16 { .map(|(i, ws)| { let name_len = ws.display_name().len(); let number_len = (i + 1).to_string().len(); - let pane_dots = if ws.layout.pane_count() > 1 { - ws.layout.pane_count() - } else { - 1 - }; - // marker + number + space + name + spaces + dots - let line1 = 3 + number_len + name_len + 2 + pane_dots; + // marker + number + space + name + spaces + aggregate dot + let line1 = 3 + number_len + name_len + 3; // branch line: " branch" let line2 = ws.branch().map(|b| 3 + b.len()).unwrap_or(0); line1.max(line2) @@ -381,7 +376,7 @@ fn render_workspace_list(app: &AppState, frame: &mut Frame, area: Rect, is_navig Style::default().fg(p.overlay0) }; - // Line 1: marker-space + number + name + state dots + // Line 1: marker-space + number + name + aggregate state dot let marker = if is_active { " " } else { " " }; // accent bar handles active indicator let mut line1 = vec![ Span::styled(marker, Style::default()), @@ -390,16 +385,8 @@ fn render_workspace_list(app: &AppState, frame: &mut Frame, area: Rect, is_navig Span::styled(" ", Style::default()), ]; - // State dots (one per pane, or single aggregate) - if ws.layout.pane_count() == 1 { - let (icon, icon_style) = state_dot(agg_state, agg_seen, p); - line1.push(Span::styled(icon, icon_style)); - } else { - for (pane_state, pane_seen) in ws.pane_states() { - let (icon, icon_style) = state_dot(pane_state, pane_seen, p); - line1.push(Span::styled(icon, icon_style)); - } - } + let (icon, icon_style) = state_dot(agg_state, agg_seen, p); + line1.push(Span::styled(icon, icon_style)); frame.render_widget( Paragraph::new(Line::from(line1)), @@ -1652,6 +1639,7 @@ fn render_toast_notification( /// /// | State | Icon | Color | /// |--------------------|------|--------| +/// | Blocked | ● | Red | /// | Working | ● | Yellow | /// | Done (idle+unseen) | ● | Blue | /// | Idle (seen) | ○ | Green | |
