Merge pull request #598 from joshuamegnauth54/desktop-view-empty-trash
fix: Trash icons should show the trash menu
This commit is contained in:
commit
d29baf1a8f
2 changed files with 13 additions and 1 deletions
|
|
@ -96,6 +96,7 @@ pub enum Action {
|
||||||
DesktopViewOptions,
|
DesktopViewOptions,
|
||||||
EditHistory,
|
EditHistory,
|
||||||
EditLocation,
|
EditLocation,
|
||||||
|
EmptyTrash,
|
||||||
ExtractHere,
|
ExtractHere,
|
||||||
Gallery,
|
Gallery,
|
||||||
HistoryNext,
|
HistoryNext,
|
||||||
|
|
@ -155,6 +156,7 @@ impl Action {
|
||||||
Action::EditLocation => {
|
Action::EditLocation => {
|
||||||
Message::TabMessage(entity_opt, tab::Message::EditLocationEnable)
|
Message::TabMessage(entity_opt, tab::Message::EditLocationEnable)
|
||||||
}
|
}
|
||||||
|
Action::EmptyTrash => Message::TabMessage(None, tab::Message::EmptyTrash),
|
||||||
Action::ExtractHere => Message::ExtractHere(entity_opt),
|
Action::ExtractHere => Message::ExtractHere(entity_opt),
|
||||||
Action::Gallery => Message::TabMessage(entity_opt, tab::Message::GalleryToggle),
|
Action::Gallery => Message::TabMessage(entity_opt, tab::Message::GalleryToggle),
|
||||||
Action::HistoryNext => Message::TabMessage(entity_opt, tab::Message::GoNext),
|
Action::HistoryNext => Message::TabMessage(entity_opt, tab::Message::GoNext),
|
||||||
|
|
|
||||||
12
src/menu.rs
12
src/menu.rs
|
|
@ -89,6 +89,7 @@ pub fn context_menu<'a>(
|
||||||
|
|
||||||
let mut selected_dir = 0;
|
let mut selected_dir = 0;
|
||||||
let mut selected = 0;
|
let mut selected = 0;
|
||||||
|
let mut selected_trash_only = false;
|
||||||
let mut selected_types: Vec<Mime> = vec![];
|
let mut selected_types: Vec<Mime> = vec![];
|
||||||
tab.items_opt().map(|items| {
|
tab.items_opt().map(|items| {
|
||||||
for item in items.iter() {
|
for item in items.iter() {
|
||||||
|
|
@ -97,12 +98,16 @@ pub fn context_menu<'a>(
|
||||||
if item.metadata.is_dir() {
|
if item.metadata.is_dir() {
|
||||||
selected_dir += 1;
|
selected_dir += 1;
|
||||||
}
|
}
|
||||||
|
if item.location_opt == Some(Location::Trash) {
|
||||||
|
selected_trash_only = true;
|
||||||
|
}
|
||||||
selected_types.push(item.mime.clone());
|
selected_types.push(item.mime.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
selected_types.sort_unstable();
|
selected_types.sort_unstable();
|
||||||
selected_types.dedup();
|
selected_types.dedup();
|
||||||
|
selected_trash_only = selected_trash_only && selected == 1;
|
||||||
|
|
||||||
let mut children: Vec<Element<_>> = Vec::new();
|
let mut children: Vec<Element<_>> = Vec::new();
|
||||||
match (&tab.mode, &tab.location) {
|
match (&tab.mode, &tab.location) {
|
||||||
|
|
@ -110,7 +115,12 @@ pub fn context_menu<'a>(
|
||||||
tab::Mode::App | tab::Mode::Desktop,
|
tab::Mode::App | tab::Mode::Desktop,
|
||||||
Location::Desktop(..) | Location::Path(..) | Location::Search(..) | Location::Recents,
|
Location::Desktop(..) | Location::Path(..) | Location::Search(..) | Location::Recents,
|
||||||
) => {
|
) => {
|
||||||
if selected > 0 {
|
if selected_trash_only {
|
||||||
|
children.push(menu_item(fl!("open"), Action::Open).into());
|
||||||
|
if tab::trash_entries() > 0 {
|
||||||
|
children.push(menu_item(fl!("empty-trash"), Action::EmptyTrash).into());
|
||||||
|
}
|
||||||
|
} else if selected > 0 {
|
||||||
if selected_dir == 1 && selected == 1 || selected_dir == 0 {
|
if selected_dir == 1 && selected == 1 || selected_dir == 0 {
|
||||||
children.push(menu_item(fl!("open"), Action::Open).into());
|
children.push(menu_item(fl!("open"), Action::Open).into());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue