Do not show remove from sidebar unless the item is a favorite, fixes #368

This commit is contained in:
Jeremy Soller 2024-10-14 11:23:46 -06:00
parent a9daddb1b0
commit cf70c16367
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
2 changed files with 58 additions and 62 deletions

50
Cargo.lock generated
View file

@ -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"

View file

@ -1357,45 +1357,41 @@ impl Application for App {
fn nav_context_menu(
&self,
id: widget::nav_bar::Id,
entity: widget::nav_bar::Id,
) -> Option<Vec<widget::menu::Tree<cosmic::app::Message<Self::Message>>>> {
let maybe_trash_entity = self.nav_model.iter().find(|&entity| {
self.nav_model
.data::<Location>(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::<FavoriteIndex>(entity);
let location_opt = self.nav_model.data::<Location>(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> {