@@ -89,6 +89,7 @@ pub fn context_menu<'a>(
89
89
90
90
let mut selected_dir = 0 ;
91
91
let mut selected = 0 ;
92
+ let mut selected_trash_only = false ;
92
93
let mut selected_types: Vec < Mime > = vec ! [ ] ;
93
94
tab. items_opt ( ) . map ( |items| {
94
95
for item in items. iter ( ) {
@@ -97,20 +98,29 @@ pub fn context_menu<'a>(
97
98
if item. metadata . is_dir ( ) {
98
99
selected_dir += 1 ;
99
100
}
101
+ if item. location_opt == Some ( Location :: Trash ) {
102
+ selected_trash_only = true ;
103
+ }
100
104
selected_types. push ( item. mime . clone ( ) ) ;
101
105
}
102
106
}
103
107
} ) ;
104
108
selected_types. sort_unstable ( ) ;
105
109
selected_types. dedup ( ) ;
110
+ selected_trash_only = selected_trash_only && selected == 1 ;
106
111
107
112
let mut children: Vec < Element < _ > > = Vec :: new ( ) ;
108
113
match ( & tab. mode , & tab. location ) {
109
114
(
110
115
tab:: Mode :: App | tab:: Mode :: Desktop ,
111
116
Location :: Desktop ( ..) | Location :: Path ( ..) | Location :: Search ( ..) | Location :: Recents ,
112
117
) => {
113
- if selected > 0 {
118
+ if selected_trash_only {
119
+ children. push ( menu_item ( fl ! ( "open" ) , Action :: Open ) . into ( ) ) ;
120
+ if tab:: trash_entries ( ) > 0 {
121
+ children. push ( menu_item ( fl ! ( "empty-trash" ) , Action :: EmptyTrash ) . into ( ) ) ;
122
+ }
123
+ } else if selected > 0 {
114
124
if selected_dir == 1 && selected == 1 || selected_dir == 0 {
115
125
children. push ( menu_item ( fl ! ( "open" ) , Action :: Open ) . into ( ) ) ;
116
126
}
0 commit comments