[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