Skip to content

Commit cf70c16

Browse files
committed
Do not show remove from sidebar unless the item is a favorite, fixes pop-os#368
1 parent a9daddb commit cf70c16

File tree

2 files changed

+58
-62
lines changed

2 files changed

+58
-62
lines changed

Cargo.lock

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app.rs

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,45 +1357,41 @@ impl Application for App {
13571357

13581358
fn nav_context_menu(
13591359
&self,
1360-
id: widget::nav_bar::Id,
1360+
entity: widget::nav_bar::Id,
13611361
) -> Option<Vec<widget::menu::Tree<cosmic::app::Message<Self::Message>>>> {
1362-
let maybe_trash_entity = self.nav_model.iter().find(|&entity| {
1363-
self.nav_model
1364-
.data::<Location>(entity)
1365-
.map(|loc| *loc == Location::Trash)
1366-
.unwrap_or_default()
1367-
});
1368-
let mut is_context_trash = false;
1369-
if let Some(trash_id) = maybe_trash_entity {
1370-
is_context_trash = trash_id == id;
1362+
let favorite_index_opt = self.nav_model.data::<FavoriteIndex>(entity);
1363+
let location_opt = self.nav_model.data::<Location>(entity);
1364+
1365+
let mut items = Vec::new();
1366+
1367+
items.push(cosmic::widget::menu::Item::Button(
1368+
fl!("open-in-new-tab"),
1369+
NavMenuAction::OpenInNewTab(entity),
1370+
));
1371+
items.push(cosmic::widget::menu::Item::Button(
1372+
fl!("open-in-new-window"),
1373+
NavMenuAction::OpenInNewWindow(entity),
1374+
));
1375+
items.push(cosmic::widget::menu::Item::Divider);
1376+
items.push(cosmic::widget::menu::Item::Button(
1377+
fl!("show-details"),
1378+
NavMenuAction::Preview(entity),
1379+
));
1380+
items.push(cosmic::widget::menu::Item::Divider);
1381+
if favorite_index_opt.is_some() {
1382+
items.push(cosmic::widget::menu::Item::Button(
1383+
fl!("remove-from-sidebar"),
1384+
NavMenuAction::RemoveFromSidebar(entity),
1385+
));
13711386
}
1372-
Some(cosmic::widget::menu::items(
1373-
&HashMap::new(),
1374-
vec![
1375-
cosmic::widget::menu::Item::Button(
1376-
fl!("open-in-new-tab"),
1377-
NavMenuAction::OpenInNewTab(id),
1378-
),
1379-
cosmic::widget::menu::Item::Button(
1380-
fl!("open-in-new-window"),
1381-
NavMenuAction::OpenInNewWindow(id),
1382-
),
1383-
cosmic::widget::menu::Item::Divider,
1384-
cosmic::widget::menu::Item::Button(fl!("show-details"), NavMenuAction::Preview(id)),
1385-
cosmic::widget::menu::Item::Divider,
1386-
if is_context_trash {
1387-
cosmic::widget::menu::Item::Button(
1388-
fl!("empty-trash"),
1389-
NavMenuAction::EmptyTrash,
1390-
)
1391-
} else {
1392-
cosmic::widget::menu::Item::Button(
1393-
fl!("remove-from-sidebar"),
1394-
NavMenuAction::RemoveFromSidebar(id),
1395-
)
1396-
},
1397-
],
1398-
))
1387+
if matches!(location_opt, Some(Location::Trash)) {
1388+
items.push(cosmic::widget::menu::Item::Button(
1389+
fl!("empty-trash"),
1390+
NavMenuAction::EmptyTrash,
1391+
));
1392+
}
1393+
1394+
Some(cosmic::widget::menu::items(&HashMap::new(), items))
13991395
}
14001396

14011397
fn nav_model(&self) -> Option<&segmented_button::SingleSelectModel> {

0 commit comments

Comments
 (0)