diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-09 04:31:21 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-09 04:32:45 +0300 |
| commit | 5460a9601ea8dd3d05e64e97040c71c6be29172b (patch) | |
| tree | a3bfa468c2112ab2eb843c7a1bef46fe3b901599 /src/ui.rs | |
| parent | b5b61c14841fda60f289cfd9c782580ea099a2a2 (diff) | |
fix(tabs): keep default numeric labels auto-generated
Diffstat (limited to 'src/ui.rs')
| -rw-r--r-- | src/ui.rs | 43 |
1 files changed, 40 insertions, 3 deletions
@@ -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"); |
