From d0c75fb723e5d11e2a7f10c39e850be11e44ac07 Mon Sep 17 00:00:00 2001 From: Valdemar Lorenzen Date: Tue, 20 Oct 2026 17:02:42 +0200 Subject: [PATCH] fix: use readonly and readwrite footer labels --- src/connection.rs | 16 ++++++++-------- src/main.rs | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/connection.rs b/src/connection.rs index 30d5a1b..b7d99a8 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -560,8 +560,8 @@ fn draw_bars( let position_width = (position.len() as u16 + 2).min(bottom.width); let mode_width = bottom.width.saturating_sub(position_width).min(10); let access = match access { - Some(AccessMode::ReadOnly) => " read only ", - Some(AccessMode::ReadWrite) => " read write ", + Some(AccessMode::ReadOnly) => " readonly ", + Some(AccessMode::ReadWrite) => " readwrite ", None => "", }; let access_width = (access.len() as u16 + if access.is_empty() { 0 } else { 2 }) @@ -1608,8 +1608,8 @@ mod tests { draw_bars(frame, top, bottom, "SQLite", "data", Some(live.access_mode()), false, None); })?; let footer: String = (0..40).map(|x| terminal.backend().buffer()[(x, 5)].symbol()).collect(); - assert!(footer.contains("read write")); - assert!(!footer.contains("read only")); + assert!(footer.contains("readwrite")); + assert!(!footer.contains("readonly")); Ok(()) } @@ -1626,18 +1626,18 @@ mod tests { let buffer = terminal.backend().buffer(); let footer: String = (0..80).map(|x| buffer[(x, 5)].symbol()).collect(); let expected = match access { - Some(AccessMode::ReadOnly) => "SQLite read only ░▓ 1:1 ", - Some(AccessMode::ReadWrite) => "SQLite read write ░▓ 1:1 ", + Some(AccessMode::ReadOnly) => "SQLite readonly ░▓ 1:1 ", + Some(AccessMode::ReadWrite) => "SQLite readwrite ░▓ 1:1 ", None => "SQLite ░▓ 1:1 ", }; assert!(footer.ends_with(expected), "{footer}"); if access.is_some() { - let x = Line::raw(&footer[..footer.find("read ").unwrap()]).width() as u16; + let x = Line::raw(&footer[..footer.find("read").unwrap()]).width() as u16; assert_eq!(buffer[(x, 5)].bg, Color::Cyan); assert_eq!(buffer[(x, 5)].fg, Color::Black); assert_eq!(buffer[(x - 1, 5)].bg, Color::Cyan); assert_eq!(buffer[(x - 2, 5)].bg, Color::Reset); - let end = x + access.map_or("", AccessMode::label).len() as u16; + let end = x + access.map_or("", AccessMode::label).len() as u16 - 1; assert_eq!(buffer[(end, 5)].bg, Color::Cyan); assert_eq!(buffer[(end + 1, 5)].bg, Color::Reset); } diff --git a/src/main.rs b/src/main.rs index d7ffa0a..690ef0d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -85,7 +85,7 @@ Navigation: Full-width bars show dbdash above and mode/database below. Saved PostgreSQL connections show database · user@host:port beside the mode, regardless of custom sidebar names; passwords are never included. - The footer shows provider, a flat lowercase access badge with one-column outer margins, then position. + The footer shows provider, a readonly/readwrite badge with one-column outer margins, then position. Only badges have colored backgrounds; the remaining bar area uses terminal defaults. Focused inputs show one-based line:column (Unicode characters, not screen cells). The position badge shows N/A outside focused inputs, including in info/help popups.