aboutsummaryrefslogtreecommitdiff
path: root/src/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.rs')
-rw-r--r--src/ui.rs56
1 files changed, 43 insertions, 13 deletions
diff --git a/src/ui.rs b/src/ui.rs
index a4d88b1b..235be9e3 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -140,14 +140,16 @@ fn compute_sidebar_width(app: &AppState) -> u16 {
let max_line = app
.workspaces
.iter()
- .map(|ws| {
+ .enumerate()
+ .map(|(i, ws)| {
let name_len = ws.display_name().len();
+ let number_len = (i + 1).to_string().len();
let pane_count = if ws.layout.pane_count() > 1 {
ws.layout.pane_count()
} else {
0
};
- let line1 = 4 + name_len + pane_count; // marker + dot + spaces + pane dots
+ let line1 = 5 + name_len + number_len + pane_count; // marker + number + name + spaces + pane dots
let line2 = ws.agent_summary().map(|s| s.len() + 2).unwrap_or(0);
line1.max(line2)
})
@@ -160,7 +162,11 @@ fn compute_sidebar_width(app: &AppState) -> u16 {
fn render_sidebar_collapsed(app: &AppState, frame: &mut Frame, area: Rect) {
let is_navigating = matches!(
app.mode,
- Mode::Navigate | Mode::RenameSession | Mode::Resize | Mode::ConfirmClose | Mode::ContextMenu
+ Mode::Navigate
+ | Mode::RenameSession
+ | Mode::Resize
+ | Mode::ConfirmClose
+ | Mode::ContextMenu
);
let sep_style = if is_navigating {
@@ -208,7 +214,14 @@ fn render_sidebar_collapsed(app: &AppState, frame: &mut Frame, area: Rect) {
Paragraph::new(Line::from(vec![
Span::styled(format!("{}", i + 1), num_style),
Span::styled(" ", row_style),
- Span::styled(icon, if is_selected { icon_style.bg(app.accent) } else { icon_style }),
+ Span::styled(
+ icon,
+ if is_selected {
+ icon_style.bg(app.accent)
+ } else {
+ icon_style
+ },
+ ),
])),
Rect::new(area.x, y, content_w, 1),
);
@@ -220,7 +233,11 @@ fn render_sidebar_collapsed(app: &AppState, frame: &mut Frame, area: Rect) {
fn render_sidebar(app: &AppState, frame: &mut Frame, area: Rect) {
let is_navigating = matches!(
app.mode,
- Mode::Navigate | Mode::RenameSession | Mode::Resize | Mode::ConfirmClose | Mode::ContextMenu
+ Mode::Navigate
+ | Mode::RenameSession
+ | Mode::Resize
+ | Mode::ConfirmClose
+ | Mode::ContextMenu
);
let highlight = Style::default().bg(app.accent).fg(Color::Black);
let sep_style = if is_navigating {
@@ -249,7 +266,11 @@ fn render_sidebar(app: &AppState, frame: &mut Frame, area: Rect) {
let marker = if Some(i) == app.active { "▸" } else { " " };
let (agg_state, agg_seen) = ws.aggregate_state();
let (icon, icon_style) = state_icon_style(agg_state, agg_seen);
- let text_style = if selected { highlight } else { Style::default() };
+ let text_style = if selected {
+ highlight
+ } else {
+ Style::default()
+ };
let dim_style = if selected {
highlight
} else {
@@ -257,24 +278,30 @@ fn render_sidebar(app: &AppState, frame: &mut Frame, area: Rect) {
};
let mut line1 = vec![
Span::styled(marker, text_style),
- Span::styled(
- ws.display_name(),
- text_style.add_modifier(Modifier::BOLD),
- ),
+ Span::styled(format!("{} ", i + 1), dim_style),
+ Span::styled(ws.display_name(), text_style.add_modifier(Modifier::BOLD)),
Span::styled(" ", dim_style),
];
if ws.layout.pane_count() == 1 {
line1.push(Span::styled(
icon,
- if selected { icon_style.bg(app.accent) } else { icon_style },
+ if selected {
+ icon_style.bg(app.accent)
+ } else {
+ icon_style
+ },
));
} else {
for (pane_state, pane_seen) in ws.pane_states() {
let (pane_icon, pane_style) = state_icon_style(pane_state, pane_seen);
line1.push(Span::styled(
pane_icon,
- if selected { pane_style.bg(app.accent) } else { pane_style },
+ if selected {
+ pane_style.bg(app.accent)
+ } else {
+ pane_style
+ },
));
}
}
@@ -288,7 +315,10 @@ fn render_sidebar(app: &AppState, frame: &mut Frame, area: Rect) {
}
}
- frame.render_widget(Paragraph::new(Line::from(line1)), Rect::new(content.x, row_y, content.width, 1));
+ frame.render_widget(
+ Paragraph::new(Line::from(line1)),
+ Rect::new(content.x, row_y, content.width, 1),
+ );
if app.mode == Mode::RenameSession && i == app.selected {
let text = format!(" {}\u{2588}", app.name_input);