[vlc-commits] [Git][videolan/vlc][master] macosx: disable Information menu item for empty playlists

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Sun Jul 19 12:36:15 UTC 2026



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


Commits:
e0333678 by Serhii Bykov at 2026-07-19T14:02:47+02:00
macosx: disable Information menu item for empty playlists

- - - - -


1 changed file:

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


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryMenuController.m
=====================================
@@ -55,6 +55,7 @@
 
     NSMenuItem *_deleteItem;
     NSMenuItem *_removeFromPlaylistItem;
+    NSMenuItem *_informationItem;
 
     VLCLibraryAddToPlaylistMenuController *_addToPlaylistMenuController;
     NSMenuItem *_addToPlaylistItem;
@@ -95,8 +96,8 @@
     NSMenuItem *markUnseenItem = [[NSMenuItem alloc] initWithTitle:_NS("Mark as Unseen") action:@selector(markUnseen:) keyEquivalent:@""];
     markUnseenItem.target = self;
 
-    NSMenuItem *informationItem = [[NSMenuItem alloc] initWithTitle:_NS("Information...") action:@selector(showInformation:) keyEquivalent:@""];
-    informationItem.target = self;
+    _informationItem = [[NSMenuItem alloc] initWithTitle:_NS("Information...") action:@selector(showInformation:) keyEquivalent:@""];
+    _informationItem.target = self;
 
     NSMenuItem * const bookmarkItem = [[NSMenuItem alloc] initWithTitle:_NS("Toggle Bookmark")
                                                                  action:@selector(toggleBookmark:)
@@ -132,7 +133,7 @@
     [revealItem vlc_setActionImageWithSystemSymbolName:@"folder"];
     [_deleteItem vlc_setActionImageWithSystemSymbolName:@"trash"];
     [markUnseenItem vlc_setActionImageWithSystemSymbolName:@"eye.slash"];
-    [informationItem vlc_setActionImageWithSystemSymbolName:@"info.circle"];
+    [_informationItem vlc_setActionImageWithSystemSymbolName:@"info.circle"];
     [addItem vlc_setActionImageWithSystemSymbolName:@"folder.badge.plus"];
 
     _libraryMenu = [[NSMenu alloc] initWithTitle:@""];
@@ -147,7 +148,7 @@
         _removeFromPlaylistItem,
         _deleteItem,
         markUnseenItem,
-        informationItem,
+        _informationItem,
         [NSMenuItem separatorItem],
         addItem
     ]];
@@ -159,7 +160,7 @@
     [_mediaItemRequiringMenuItems addObject:self.favoriteItem];
     [_mediaItemRequiringMenuItems addObject:revealItem];
     [_mediaItemRequiringMenuItems addObject:_deleteItem];
-    [_mediaItemRequiringMenuItems addObject:informationItem];
+    [_mediaItemRequiringMenuItems addObject:_informationItem];
 
     _recentsMediaItemRequiringMenuItems = [NSHashTable weakObjectsHashTable];
     [_recentsMediaItemRequiringMenuItems addObject:markUnseenItem];
@@ -185,6 +186,17 @@
     }
 }
 
+- (BOOL)representedItemHasInformationTarget:(VLCLibraryRepresentedItem * const)representedItem
+{
+    id<VLCMediaLibraryItemProtocol> const item = representedItem.item;
+
+    if ([item isKindOfClass:VLCMediaLibraryPlaylist.class]) {
+        return ((VLCMediaLibraryPlaylist *)item).numberOfMedia > 0;
+    }
+
+    return item.mediaItems.count > 0;
+}
+
 - (void)updateMenuItems
 {
     VLCLibraryModel * const libraryModel = VLCMain.sharedInstance.libraryController.libraryModel;
@@ -284,7 +296,7 @@
 
         [self menuItems:_localInputItemRequiringMenuItems setHidden:anyStream];
         [self menuItems:_folderInputItemRequiringMenuItems setHidden:!bookmarkable];
-   }
+    }
 }
 
 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem
@@ -293,7 +305,22 @@
     if (menuItem.action == @selector(addMedia:)) {
         return YES;
     }
-    return self.representedItems.count > 0 || self.representedInputItems.count > 0;
+
+    if (self.representedItems.count == 0 && self.representedInputItems.count == 0) {
+        return NO;
+    }
+
+    if (menuItem == _informationItem) {
+        for (VLCLibraryRepresentedItem * const item in self.representedItems) {
+            if ([self representedItemHasInformationTarget:item]) {
+                return YES;
+            }
+        }
+
+        return NO;
+    }
+
+    return YES;
 }
 
 - (void)popupMenuWithEvent:(NSEvent *)theEvent forView:(NSView *)theView



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/e03336785cac9dd0db941dfbe4e1ee0c5b1e3df1

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/e03336785cac9dd0db941dfbe4e1ee0c5b1e3df1
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