aboutsummaryrefslogtreecommitdiff
path: root/src/ui.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-09 04:31:21 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-09 04:32:45 +0300
commit5460a9601ea8dd3d05e64e97040c71c6be29172b (patch)
treea3bfa468c2112ab2eb843c7a1bef46fe3b901599 /src/ui.rs
parentb5b61c14841fda60f289cfd9c782580ea099a2a2 (diff)
fix(tabs): keep default numeric labels auto-generated
Diffstat (limited to 'src/ui.rs')
-rw-r--r--src/ui.rs43
1 files changed, 40 insertions, 3 deletions
diff --git a/src/ui.rs b/src/ui.rs
index f7d90408..33ba4e0b 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -558,10 +558,17 @@ fn render_tab_bar(app: &AppState, frame: &mut Frame, area: Rect) {
};
let active = idx == ws.active_tab;
let style = if active {
+ let base = Style::default().fg(p.panel_bg).bg(p.accent);
+ if tab.is_auto_named() {
+ base.add_modifier(Modifier::DIM)
+ } else {
+ base.add_modifier(Modifier::BOLD)
+ }
+ } else if tab.is_auto_named() {
Style::default()
- .fg(p.panel_bg)
- .bg(p.accent)
- .add_modifier(Modifier::BOLD)
+ .fg(p.overlay0)
+ .bg(p.surface0)
+ .add_modifier(Modifier::DIM)
} else {
Style::default().fg(p.overlay1).bg(p.surface0)
};
@@ -3139,6 +3146,36 @@ mod tests {
}
#[test]
+ fn tab_bar_dims_auto_named_tabs_and_emphasizes_custom_tabs() {
+ let mut app = crate::app::state::AppState::test_new();
+ let mut ws = Workspace::test_new("test");
+ let custom_tab = ws.test_add_tab(Some("logs"));
+ ws.switch_tab(custom_tab);
+
+ app.workspaces = vec![ws];
+ app.active = Some(0);
+ app.selected = 0;
+ app.mode = Mode::Terminal;
+
+ compute_view(&mut app, Rect::new(0, 0, 80, 20));
+
+ let backend = TestBackend::new(80, 20);
+ let mut terminal = Terminal::new(backend).unwrap();
+ terminal.draw(|frame| render(&app, frame)).unwrap();
+ let buffer = terminal.backend().buffer();
+
+ let auto_rect = app.view.tab_hit_areas[0];
+ let custom_rect = app.view.tab_hit_areas[1];
+ let auto_style = buffer[(auto_rect.x + 1, auto_rect.y)].style();
+ let custom_style = buffer[(custom_rect.x + 1, custom_rect.y)].style();
+
+ assert_eq!(auto_style.fg, Some(app.palette.overlay0));
+ assert!(auto_style.add_modifier.contains(Modifier::DIM));
+ assert_eq!(custom_style.fg, Some(app.palette.panel_bg));
+ assert!(custom_style.add_modifier.contains(Modifier::BOLD));
+ }
+
+ #[test]
fn all_workspaces_agent_panel_entries_use_workspace_and_optional_tab_labels() {
let mut app = crate::app::state::AppState::test_new();
let mut first = Workspace::test_new("one");