From ebf2520d05d48a926798a500f8ac128e0e9d930f Mon Sep 17 00:00:00 2001 From: niklasmarderx Date: Wed, 1 Apr 2026 09:41:55 +0200 Subject: [PATCH 1/2] fix: highlight favourite icon and sort favourites alphabetically MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The heart icon now shows ❤️ for favourites and 🤍 for non-favourites, with brighter text when the app is marked as a favourite. Previously the icon looked the same regardless of favourite status. Favourites are now sorted alphabetically by display name. Closes #254 --- src/app/apps.rs | 6 ++++-- src/app/tile.rs | 16 +++++++--------- src/styles.rs | 23 +++++++++++++++++------ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/app/apps.rs b/src/app/apps.rs index 7b6624d..1722777 100644 --- a/src/app/apps.rs +++ b/src/app/apps.rs @@ -213,11 +213,13 @@ impl App { let name = self.search_name.clone(); let theme_clone = theme.clone(); + let is_favourite = self.ranking == -1; + let heart = if is_favourite { "❤️" } else { "🤍" }; row = row.push( - Button::new(Text::new("♥️").width(Length::Fill).align_x(Alignment::End)) + Button::new(Text::new(heart).width(Length::Fill).align_x(Alignment::End)) .on_press_with(move || Message::ToggleFavouriteApp(name.clone())) .width(Length::Fill) - .style(move |_, status| favourite_button_style(&theme_clone, status)), + .style(move |_, status| favourite_button_style(&theme_clone, status, is_favourite)), ); let msg = on_press.or(match self.open_command.clone() { diff --git a/src/app/tile.rs b/src/app/tile.rs index 02e029a..05c4166 100644 --- a/src/app/tile.rs +++ b/src/app/tile.rs @@ -109,16 +109,14 @@ impl AppIndex { } fn get_favourites(&self) -> Vec { - self.by_name + let mut favs: Vec = self + .by_name .values() - .filter_map(|x| { - if x.ranking == -1 { - Some(x.to_owned()) - } else { - None - } - }) - .collect() + .filter(|x| x.ranking == -1) + .cloned() + .collect(); + favs.sort_by(|a, b| a.display_name.cmp(&b.display_name)); + favs } fn empty() -> AppIndex { diff --git a/src/styles.rs b/src/styles.rs index 3972b9a..a978adb 100644 --- a/src/styles.rs +++ b/src/styles.rs @@ -75,12 +75,23 @@ pub fn result_button_style(theme: &ConfigTheme) -> button::Style { } } -pub fn favourite_button_style(theme: &ConfigTheme, status: button::Status) -> button::Style { - let text_color = match status { - button::Status::Pressed => theme.text_color(1.), - button::Status::Hovered => theme.text_color(0.5), - button::Status::Active => theme.text_color(0.1), - button::Status::Disabled => theme.text_color(0.1), +pub fn favourite_button_style( + theme: &ConfigTheme, + status: button::Status, + is_favourite: bool, +) -> button::Style { + let text_color = if is_favourite { + match status { + button::Status::Pressed => theme.text_color(0.8), + button::Status::Hovered => theme.text_color(0.9), + _ => theme.text_color(1.), + } + } else { + match status { + button::Status::Pressed => theme.text_color(1.), + button::Status::Hovered => theme.text_color(0.5), + _ => theme.text_color(0.1), + } }; button::Style { From 5a0a12379a4268145bf990568646c6d34b06b8dd Mon Sep 17 00:00:00 2001 From: niklasmarderx Date: Wed, 1 Apr 2026 10:54:03 +0200 Subject: [PATCH 2/2] fix: address review feedback - simplify style, drop emoji swap --- src/app/apps.rs | 3 +-- src/styles.rs | 20 +++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/app/apps.rs b/src/app/apps.rs index 1722777..90d615c 100644 --- a/src/app/apps.rs +++ b/src/app/apps.rs @@ -214,9 +214,8 @@ impl App { let name = self.search_name.clone(); let theme_clone = theme.clone(); let is_favourite = self.ranking == -1; - let heart = if is_favourite { "❤️" } else { "🤍" }; row = row.push( - Button::new(Text::new(heart).width(Length::Fill).align_x(Alignment::End)) + Button::new(Text::new("♥️").width(Length::Fill).align_x(Alignment::End)) .on_press_with(move || Message::ToggleFavouriteApp(name.clone())) .width(Length::Fill) .style(move |_, status| favourite_button_style(&theme_clone, status, is_favourite)), diff --git a/src/styles.rs b/src/styles.rs index a978adb..91861f8 100644 --- a/src/styles.rs +++ b/src/styles.rs @@ -80,18 +80,16 @@ pub fn favourite_button_style( status: button::Status, is_favourite: bool, ) -> button::Style { - let text_color = if is_favourite { - match status { - button::Status::Pressed => theme.text_color(0.8), - button::Status::Hovered => theme.text_color(0.9), - _ => theme.text_color(1.), - } + let (base, pressed, hovered) = if is_favourite { + (1.0, 0.8, 0.9) } else { - match status { - button::Status::Pressed => theme.text_color(1.), - button::Status::Hovered => theme.text_color(0.5), - _ => theme.text_color(0.1), - } + (0.1, 1.0, 0.5) + }; + + let text_color = match status { + button::Status::Pressed => theme.text_color(pressed), + button::Status::Hovered => theme.text_color(hovered), + _ => theme.text_color(base), }; button::Style {