From bd57bdd1bc492a6d08874ca70cb5011101b3744d Mon Sep 17 00:00:00 2001 From: Mollusk Date: Sun, 14 Jun 2026 03:35:18 -0400 Subject: [PATCH] polish(ui): tooltip on the layout button + even Audio Devices spacing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The top-bar room-layout button was an icon-only canvas with no label or tooltip, while the Settings button beside it is labeled — a discoverability and consistency gap. Wrap it in the existing tooltip pattern ("Room layout", Position::Bottom) so its purpose is discoverable on hover. - The Audio Devices input/output columns used spacing(4) while every other Settings section uses spacing(8); bump both to 8 for an even vertical rhythm. Pure presentational changes. Build + clippy clean. Co-Authored-By: Claude Opus 4.8 --- src/app/mod.rs | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/app/mod.rs b/src/app/mod.rs index e94a4b4..80243ca 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1000,14 +1000,21 @@ fn view(state: &AppState) -> Element<'_, AppMessage> { let top_bar = row![ horizontal_space(), - button( - Canvas::new(LayoutIcon { fg: color_text }) - .width(iced::Length::Fixed(18.0)) - .height(iced::Length::Fixed(18.0)) + tooltip( + button( + Canvas::new(LayoutIcon { fg: color_text }) + .width(iced::Length::Fixed(18.0)) + .height(iced::Length::Fixed(18.0)) + ) + .on_press(AppMessage::OpenLayoutPicker) + .style(b_style(color_surface, color_blue, color_text, 6.0)) + .padding(8), + container(text("Room layout").size(11).color(color_text)) + .padding(8) + .style(c_style(color_crust, color_surface, 6.0)), + iced::widget::tooltip::Position::Bottom, ) - .on_press(AppMessage::OpenLayoutPicker) - .style(b_style(color_surface, color_blue, color_text, 6.0)) - .padding(8), + .gap(8), button( row![ icon(IconKind::Settings, 15.0, color_text), @@ -1222,7 +1229,7 @@ fn view(state: &AppState) -> Element<'_, AppMessage> { slider(0.0..=2.0, state.config.input_volume, AppMessage::InputVolumeChanged) .step(0.05) .on_release(AppMessage::PersistConfig), - ].spacing(4).width(iced::Length::Fill), + ].spacing(8).width(iced::Length::Fill), column![ text("Output Device").size(12).color(color_subtext), pick_list( @@ -1234,7 +1241,7 @@ fn view(state: &AppState) -> Element<'_, AppMessage> { slider(0.0..=2.0, state.config.output_volume, AppMessage::OutputVolumeChanged) .step(0.05) .on_release(AppMessage::PersistConfig), - ].spacing(4).width(iced::Length::Fill), + ].spacing(8).width(iced::Length::Fill), ].spacing(20).align_y(iced::alignment::Vertical::Top).width(iced::Length::Fill), vertical_space(section_gap),