[vlc-commits] [Git][videolan/vlc][master] 2 commits: macosx: Do nothing if playlist has no MRL

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Thu Sep 10 16:52:06 UTC 2026



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
beb5a603 by Claudio Cambra at 2026-09-10T18:38:11+02:00
macosx: Do nothing if playlist has no MRL

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
283cc68c by Claudio Cambra at 2026-09-10T18:38:11+02:00
macosx: Do not present reveal in finder if playlist is not file-based

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


2 changed files:

- modules/gui/macosx/library/VLCLibraryDataTypes.m
- modules/gui/macosx/library/VLCLibraryMenuController.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.m
=====================================
@@ -1184,6 +1184,10 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
 
 - (void)revealInFinder
 {
+    if (_MRL.length == 0) {
+        return;
+    }
+
     NSURL * const URL = [NSURL URLWithString:_MRL];
     if (URL) {
         [NSWorkspace.sharedWorkspace activateFileViewerSelectingURLs:@[URL]];


=====================================
modules/gui/macosx/library/VLCLibraryMenuController.m
=====================================
@@ -54,6 +54,7 @@
     NSHashTable<NSMenuItem*> *_localInputItemRequiringMenuItems;
     NSHashTable<NSMenuItem*> *_folderInputItemRequiringMenuItems;
 
+    NSMenuItem *_revealItem;
     NSMenuItem *_deleteItem;
     NSMenuItem *_removeFromPlaylistItem;
     NSMenuItem *_informationItem;
@@ -89,8 +90,8 @@
     NSMenuItem *addItem = [[NSMenuItem alloc] initWithTitle:_NS("Add Media Folder...") action:@selector(addMedia:) keyEquivalent:@""];
     addItem.target = self;
 
-    NSMenuItem *revealItem = [[NSMenuItem alloc] initWithTitle:_NS("Reveal in Finder") action:@selector(revealInFinder:) keyEquivalent:@""];
-    revealItem.target = self;
+    _revealItem = [[NSMenuItem alloc] initWithTitle:_NS("Reveal in Finder") action:@selector(revealInFinder:) keyEquivalent:@""];
+    _revealItem.target = self;
 
     _deleteItem = [[NSMenuItem alloc] initWithTitle:_NS("Move to Trash") action:@selector(moveToTrash:) keyEquivalent:@""];
     _deleteItem.target = self;
@@ -134,7 +135,7 @@
     [self.favoriteItem vlc_setActionImageWithSystemSymbolName:@"heart"];
     [bookmarkItem vlc_setActionImageWithSystemSymbolName:@"bookmark"];
     [addToLibraryItem vlc_setActionImageWithSystemSymbolName:@"plus.rectangle.on.folder"];
-    [revealItem vlc_setActionImageWithSystemSymbolName:@"folder"];
+    [_revealItem vlc_setActionImageWithSystemSymbolName:@"folder"];
     [_deleteItem vlc_setActionImageWithSystemSymbolName:@"trash"];
     [markUnseenItem vlc_setActionImageWithSystemSymbolName:@"eye.slash"];
     [_informationItem vlc_setActionImageWithSystemSymbolName:@"info.circle"];
@@ -149,7 +150,7 @@
         self.favoriteItem,
         bookmarkItem,
         addToLibraryItem,
-        revealItem,
+        _revealItem,
         _removeFromPlaylistItem,
         _deleteItem,
         markUnseenItem,
@@ -163,7 +164,7 @@
     [_mediaItemRequiringMenuItems addObject:appendItem];
     [_mediaItemRequiringMenuItems addObject:_addToPlaylistItem];
     [_mediaItemRequiringMenuItems addObject:self.favoriteItem];
-    [_mediaItemRequiringMenuItems addObject:revealItem];
+    [_mediaItemRequiringMenuItems addObject:_revealItem];
     [_mediaItemRequiringMenuItems addObject:_deleteItem];
     [_mediaItemRequiringMenuItems addObject:_informationItem];
 
@@ -175,7 +176,7 @@
     [_inputItemRequiringMenuItems addObject:appendItem];
 
     _localInputItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
-    [_localInputItemRequiringMenuItems addObject:revealItem];
+    [_localInputItemRequiringMenuItems addObject:_revealItem];
     [_localInputItemRequiringMenuItems addObject:_deleteItem];
 
     _folderInputItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
@@ -202,6 +203,19 @@
     return item.mediaItems.count > 0;
 }
 
+- (BOOL)representedItemsCanBeRevealedInFinder
+{
+    for (VLCLibraryRepresentedItem * const representedItem in self.representedItems) {
+        id<VLCMediaLibraryItemProtocol> const item = representedItem.item;
+        if ([item isKindOfClass:VLCMediaLibraryPlaylist.class] &&
+            ((VLCMediaLibraryPlaylist *)item).MRL.length == 0) {
+            return NO;
+        }
+    }
+
+    return self.representedItems.count > 0;
+}
+
 - (void)updateMenuItems
 {
     VLCLibraryModel * const libraryModel = VLCMain.sharedInstance.libraryController.libraryModel;
@@ -219,6 +233,7 @@
         [self menuItems:_folderInputItemRequiringMenuItems setHidden:YES];
         [self menuItems:_recentsMediaItemRequiringMenuItems setHidden:YES];
         [self menuItems:_mediaItemRequiringMenuItems setHidden:NO];
+        _revealItem.hidden = NO;
         self.favoriteItem.hidden = isFavoritesSegment;
         return;
     }
@@ -228,6 +243,7 @@
         [self menuItems:_localInputItemRequiringMenuItems setHidden:YES];
         [self menuItems:_folderInputItemRequiringMenuItems setHidden:YES];
         [self menuItems:_mediaItemRequiringMenuItems setHidden:NO];
+        _revealItem.hidden = ![self representedItemsCanBeRevealedInFinder];
 
         BOOL allInPlaylist = YES;
         for (VLCLibraryRepresentedItem * const item in self.representedItems) {
@@ -337,6 +353,10 @@
         return NO;
     }
 
+    if (menuItem == _revealItem && self.representedItems.count > 0) {
+        return [self representedItemsCanBeRevealedInFinder];
+    }
+
     return YES;
 }
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/7175525613b0d81b81acce8bf254143f9fa1dc14...283cc68c83876d8100043fd22cc668709022afd5

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/7175525613b0d81b81acce8bf254143f9fa1dc14...283cc68c83876d8100043fd22cc668709022afd5
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list