From cf70c16367a9e990b16e53acfe567fbf26b19d88 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 14 Oct 2024 11:23:46 -0600 Subject: [PATCH] Do not show remove from sidebar unless the item is a favorite, fixes #368 --- Cargo.lock | 50 +++++++++++++++++++------------------- src/app.rs | 70 +++++++++++++++++++++++++----------------------------- 2 files changed, 58 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6900b8f..76a6fda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -808,9 +808,9 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] @@ -913,9 +913,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.29" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e804ac3194a48bb129643eb1d62fcc20d18c6b8c181704489353d13120bcd1" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" dependencies = [ "jobserver", "libc", @@ -1212,7 +1212,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1231,7 +1231,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "quote", "syn 1.0.109", @@ -1340,7 +1340,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "almost", "cosmic-config", @@ -2800,7 +2800,7 @@ dependencies = [ [[package]] name = "iced" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "dnd", "iced_accessibility", @@ -2819,7 +2819,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "accesskit", "accesskit_unix", @@ -2829,7 +2829,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "bitflags 2.6.0", "dnd", @@ -2851,7 +2851,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "futures", "iced_core", @@ -2864,7 +2864,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "bitflags 2.6.0", "bytemuck", @@ -2888,7 +2888,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2900,7 +2900,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "dnd", "iced_accessibility", @@ -2914,7 +2914,7 @@ dependencies = [ [[package]] name = "iced_sctk" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "enum-repr", "float-cmp", @@ -2941,7 +2941,7 @@ dependencies = [ [[package]] name = "iced_style" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "iced_core", "once_cell", @@ -2951,7 +2951,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "bytemuck", "cosmic-text", @@ -2968,7 +2968,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "as-raw-xcb-connection", "bitflags 2.6.0", @@ -2997,7 +2997,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "dnd", "iced_accessibility", @@ -3015,7 +3015,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.12.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "dnd", "iced_accessibility", @@ -3531,7 +3531,7 @@ checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#8da25f94e9c363c8c6b93284adf4cf6e07bc3a45" +source = "git+https://github.com/pop-os/libcosmic.git#dc97166f914f8273e2521188ba5f1121f0ca3fda" dependencies = [ "apply", "ashpd 0.9.2", @@ -4488,9 +4488,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" [[package]] name = "pbkdf2" @@ -4710,9 +4710,9 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" [[package]] name = "pure-rust-locales" diff --git a/src/app.rs b/src/app.rs index 42ca712..87ebcba 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1357,45 +1357,41 @@ impl Application for App { fn nav_context_menu( &self, - id: widget::nav_bar::Id, + entity: widget::nav_bar::Id, ) -> Option>>> { - let maybe_trash_entity = self.nav_model.iter().find(|&entity| { - self.nav_model - .data::(entity) - .map(|loc| *loc == Location::Trash) - .unwrap_or_default() - }); - let mut is_context_trash = false; - if let Some(trash_id) = maybe_trash_entity { - is_context_trash = trash_id == id; + let favorite_index_opt = self.nav_model.data::(entity); + let location_opt = self.nav_model.data::(entity); + + let mut items = Vec::new(); + + items.push(cosmic::widget::menu::Item::Button( + fl!("open-in-new-tab"), + NavMenuAction::OpenInNewTab(entity), + )); + items.push(cosmic::widget::menu::Item::Button( + fl!("open-in-new-window"), + NavMenuAction::OpenInNewWindow(entity), + )); + items.push(cosmic::widget::menu::Item::Divider); + items.push(cosmic::widget::menu::Item::Button( + fl!("show-details"), + NavMenuAction::Preview(entity), + )); + items.push(cosmic::widget::menu::Item::Divider); + if favorite_index_opt.is_some() { + items.push(cosmic::widget::menu::Item::Button( + fl!("remove-from-sidebar"), + NavMenuAction::RemoveFromSidebar(entity), + )); } - Some(cosmic::widget::menu::items( - &HashMap::new(), - vec![ - cosmic::widget::menu::Item::Button( - fl!("open-in-new-tab"), - NavMenuAction::OpenInNewTab(id), - ), - cosmic::widget::menu::Item::Button( - fl!("open-in-new-window"), - NavMenuAction::OpenInNewWindow(id), - ), - cosmic::widget::menu::Item::Divider, - cosmic::widget::menu::Item::Button(fl!("show-details"), NavMenuAction::Preview(id)), - cosmic::widget::menu::Item::Divider, - if is_context_trash { - cosmic::widget::menu::Item::Button( - fl!("empty-trash"), - NavMenuAction::EmptyTrash, - ) - } else { - cosmic::widget::menu::Item::Button( - fl!("remove-from-sidebar"), - NavMenuAction::RemoveFromSidebar(id), - ) - }, - ], - )) + if matches!(location_opt, Some(Location::Trash)) { + items.push(cosmic::widget::menu::Item::Button( + fl!("empty-trash"), + NavMenuAction::EmptyTrash, + )); + } + + Some(cosmic::widget::menu::items(&HashMap::new(), items)) } fn nav_model(&self) -> Option<&segmented_button::SingleSelectModel> {