From 1f028950b32bc16b73fd6fc40aac8b431aa31aed Mon Sep 17 00:00:00 2001 From: Georg Bauer Date: Tue, 28 Jul 2026 19:40:31 +0200 Subject: [PATCH] fix: better sidebar layout --- assets/icons/folder-open.svg | 4 ++++ src/app/view.rs | 33 +++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 assets/icons/folder-open.svg diff --git a/assets/icons/folder-open.svg b/assets/icons/folder-open.svg new file mode 100644 index 0000000..840b3ba --- /dev/null +++ b/assets/icons/folder-open.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/app/view.rs b/src/app/view.rs index a535f98..07dc908 100644 --- a/src/app/view.rs +++ b/src/app/view.rs @@ -29,6 +29,7 @@ use std::collections::VecDeque; use std::path::Path; const ICON_FOLDER: &[u8] = include_bytes!("../../assets/icons/folder.svg"); +const ICON_FOLDER_OPEN: &[u8] = include_bytes!("../../assets/icons/folder-open.svg"); const ICON_FOLDER_PLUS: &[u8] = include_bytes!("../../assets/icons/folder-plus.svg"); const ICON_NEW_SESSION: &[u8] = include_bytes!("../../assets/icons/new-session.svg"); const ICON_SETTINGS: &[u8] = include_bytes!("../../assets/icons/settings.svg"); @@ -52,11 +53,9 @@ const TITLE_BAR_HEIGHT: f32 = 30.0; const TITLE_BAR_CONTROL: f32 = 24.0; /// Space the macOS traffic lights need before our own controls start. const TRAFFIC_LIGHT_WIDTH: f32 = 78.0; -const PROJECT_DISCLOSURE_WIDTH: f32 = 12.0; const PROJECT_ICON_WIDTH: u16 = 17; const PROJECT_LABEL_SPACING: f32 = 9.0; -const SESSION_INDENT: f32 = - PROJECT_DISCLOSURE_WIDTH + PROJECT_ICON_WIDTH as f32 + PROJECT_LABEL_SPACING * 2.0; +const SESSION_INDENT: f32 = PROJECT_ICON_WIDTH as f32 + PROJECT_LABEL_SPACING; impl App { pub(crate) fn view(&self, id: window::Id) -> Element<'_, Message> { @@ -332,10 +331,14 @@ impl App { row![ button( row![ - text(if project.collapsed { "›" } else { "▾" }) - .size(12) - .width(PROJECT_DISCLOSURE_WIDTH), - icon(ICON_FOLDER, PROJECT_ICON_WIDTH), + icon( + if project.collapsed { + ICON_FOLDER + } else { + ICON_FOLDER_OPEN + }, + PROJECT_ICON_WIDTH, + ), text(&project.name).size(14) ] .spacing(PROJECT_LABEL_SPACING) @@ -376,7 +379,6 @@ impl App { .on_press(Message::DiscardSession(project.id)) .style(button::text), ] - .spacing(3) .align_y(Alignment::Center), ); } @@ -398,14 +400,14 @@ impl App { let expanded = self.expanded_archives.contains(&project.id); projects = projects.push( row![ - Space::new().width(26), + Space::new().width(SESSION_INDENT), button( - text(format!( - "{} Archived sessions ({})", - if expanded { "▾" } else { "›" }, - archived.len() - )) - .size(12) + text(if expanded { + "Hide archived sessions" + } else { + "Show archived sessions" + }) + .size(13) .color(muted_text()), ) .width(Length::Fill) @@ -472,7 +474,6 @@ impl App { .on_press(Message::RequestDeleteSession(session.id)) .style(button::text), ] - .spacing(3) .align_y(Alignment::Center) .into() }