diff --git a/src/connection.rs b/src/connection.rs index 0319f3d..2638b95 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -450,7 +450,7 @@ fn draw_help(frame: &mut Frame, screen: Rect, offset: &mut u16) { Optional Name sets the sidebar label; blank uses the default.\n\ Connect saves settings only on success; e edits save without connecting.\n\ Access defaults to READ ONLY, including older saved connections.\n\ - [RO]/[RW] badges remain visible when sidebar names truncate.\n\ + [RO]/[RW] badges stay right-aligned; * before the badge marks the active connection.\n\ Header/connected badge show live mode; info shows saved Access.\n\ Saved mode edits need R to reconnect before they take effect.\n\ CA bundles come from .pem/.crt files in the dbdash config directory.\n\ @@ -516,10 +516,10 @@ fn database_label(label: &str, access: AccessMode, connected: bool, expanded: bo result.push(' '); } result.push(' '); - result.push_str(badge); if connected { - result.push_str(" *"); + result.push_str("* "); } + result.push_str(badge); result } @@ -1586,7 +1586,6 @@ mod tests { profiles.save(&saved)?; assert_eq!(profiles.entries[0].access, AccessMode::ReadOnly); assert_eq!(live.access_mode(), AccessMode::ReadWrite); - assert!(database_label("data", live.access_mode(), true, true, 30).ends_with("[RW] *")); let mut terminal = ratatui::Terminal::new(ratatui::backend::TestBackend::new(40, 6))?; terminal.draw(|frame| { let [top, _, bottom] = shell_areas(frame.area()); @@ -1769,9 +1768,17 @@ mod tests { frame.area(), ); })?; - assert_eq!(terminal.backend().buffer()[(30, 1)].symbol(), "*"); + assert_eq!(terminal.backend().buffer()[(25, 1)].symbol(), "*"); let row: String = (1..31).map(|x| terminal.backend().buffer()[(x, 1)].symbol()).collect(); - assert!(row.ends_with("[RW] *")); + assert!(row.ends_with("* [RW]")); + let inactive = database_label("inactive", AccessMode::ReadOnly, false, false, 30); + let active_badge_column = (1..31) + .find(|&x| terminal.backend().buffer()[(x, 1)].symbol() == "[") + .unwrap() - 1; + assert_eq!( + active_badge_column as usize, + Line::raw(&inactive[..inactive.find("[RO]").unwrap()]).width() + ); for width in 4..9 { assert_eq!(database_label("long", AccessMode::ReadOnly, true, true, width), "[RO]"); }