@@ -1357,45 +1357,41 @@ impl Application for App {
1357
1357
1358
1358
fn nav_context_menu (
1359
1359
& self ,
1360
- id : widget:: nav_bar:: Id ,
1360
+ entity : widget:: nav_bar:: Id ,
1361
1361
) -> 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
+ ) ) ;
1371
1386
}
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) )
1399
1395
}
1400
1396
1401
1397
fn nav_model ( & self ) -> Option < & segmented_button:: SingleSelectModel > {
0 commit comments