From 39f9bb45ffa1f76e23abd3efeea8e6a28ea249fa Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Mon, 14 Apr 2025 11:53:37 +0200 Subject: [PATCH] fix(app-list): missing app icons when an appid is not found --- Cargo.lock | 30 +++++++++++++++--------------- cosmic-app-list/src/app.rs | 18 ++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc72ebf1..120fdd87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1390,7 +1390,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1412,7 +1412,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "quote", "syn 1.0.109", @@ -1571,7 +1571,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "almost", "cosmic-config", @@ -2922,7 +2922,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "dnd", "iced_accessibility", @@ -2940,7 +2940,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "accesskit", "accesskit_winit", @@ -2949,7 +2949,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "bitflags 2.9.0", "bytes", @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "futures", "iced_core", @@ -2999,7 +2999,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "bitflags 2.9.0", "bytemuck", @@ -3021,7 +3021,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3033,7 +3033,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3048,7 +3048,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "bytemuck", "cosmic-text", @@ -3064,7 +3064,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "as-raw-xcb-connection", "bitflags 2.9.0", @@ -3095,7 +3095,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3113,7 +3113,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3839,7 +3839,7 @@ checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#f7d22446c1766b6d2e60b7e0333717f96ca347e9" +source = "git+https://github.com/pop-os/libcosmic#67df54f38390eda8180b55b55b0fe9825894a62a" dependencies = [ "apply", "ashpd 0.9.2", diff --git a/cosmic-app-list/src/app.rs b/cosmic-app-list/src/app.rs index a4916f83..1f8e5cc2 100755 --- a/cosmic-app-list/src/app.rs +++ b/cosmic-app-list/src/app.rs @@ -576,11 +576,8 @@ fn find_desktop_entries<'a>( app_ids.iter().map(|fav| { let unicase_fav = fde::unicase::Ascii::new(fav.as_str()); fde::find_app_by_id(desktop_entries, unicase_fav) - .unwrap_or_else(|| { - panic!("could not find {fav}"); - &fde::DesktopEntry::from_appid(fav.clone()).to_owned() - }) - .to_owned() + .map(ToOwned::to_owned) + .unwrap_or_else(|| fde::DesktopEntry::from_appid(fav.clone()).to_owned()) }) } @@ -1066,26 +1063,27 @@ impl cosmic::Application for CosmicAppList { let unicase_appid = fde::unicase::Ascii::new(&*info.app_id); let new_desktop_info = match fde::find_app_by_id(&self.desktop_entries, unicase_appid) { - Some(appid) => appid, + Some(appid) => appid.clone(), None => { // Update desktop entries in case it was not found. + self.update_desktop_entries(); match fde::find_app_by_id( &self.desktop_entries, unicase_appid, ) { - Some(appid) => appid, + Some(appid) => appid.clone(), None => { tracing::error!( id = info.app_id, "could not find desktop entry for app" ); - return Task::none(); + + fde::DesktopEntry::from_appid(info.app_id.clone()) } } } - } - .clone(); + }; if let Some(t) = self .active_list