vlc | branch: master | Felix Paul Kühne <fe...@feepk.net> | Sun Feb  2 16:23:20 
2020 +0100| [27a98ee4a92e429e73de9169fbe468b85a6a2940] | committer: Felix Paul 
Kühne

macosx/menu: replace implicit 10.14 dependency (closes #23694)

The itemArray property is settable in 10.14 and above only, so this commit adds 
a work-around to retain support with previous releases of macOS.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=27a98ee4a92e429e73de9169fbe468b85a6a2940
---

 .../package/macosx/VLC.xcodeproj/project.pbxproj   |  6 ++++
 modules/gui/macosx/Makefile.am                     |  2 ++
 .../gui/macosx/extensions/NSMenu+VLCAdditions.h    | 35 +++++++++++++++++++
 .../gui/macosx/extensions/NSMenu+VLCAdditions.m    | 39 ++++++++++++++++++++++
 .../gui/macosx/library/VLCLibraryMenuController.m  |  5 +--
 .../macosx/playlist/VLCPlaylistMenuController.m    |  3 +-
 po/POTFILES.in                                     |  2 ++
 7 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj 
b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index 3cd3787692..bc80f68022 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -169,6 +169,7 @@
                7DE7232E22A51F8D00D72616 /* VLCPositionFormatter.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 7DE7232D22A51F8D00D72616 /* 
VLCPositionFormatter.m */; };
                7DE82E7922843781002D341A /* VLCLibraryAlbumTableCellView.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 7DE82E7822843781002D341A /* 
VLCLibraryAlbumTableCellView.m */; };
                7DE9C7DD220728420089108F /* VLCPlayerController.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 7DE9C7DC220728420089108F /* 
VLCPlayerController.m */; };
+               7DF0994F23E71E76007CA6EE /* NSMenu+VLCAdditions.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 7DF0994E23E71E76007CA6EE /* 
NSMenu+VLCAdditions.m */; };
                7DFBDCA82269E77500B700A5 /* VLCLibraryController.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 7DFBDCA72269E77500B700A5 /* 
VLCLibraryController.m */; };
                7DFBDCAB2269E77F00B700A5 /* VLCLibraryModel.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 7DFBDCAA2269E77F00B700A5 /* VLCLibraryModel.m 
*/; };
                7DFBDCAE2269ED0C00B700A5 /* VLCLibraryVideoDataSource.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCAD2269ED0C00B700A5 /* 
VLCLibraryVideoDataSource.m */; };
@@ -593,6 +594,8 @@
                7DE9C7DC220728420089108F /* VLCPlayerController.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= VLCPlayerController.m; sourceTree = "<group>"; };
                7DF0435E1972E26A0022B534 /* VLCAddonListItem.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
VLCAddonListItem.h; sourceTree = "<group>"; };
                7DF0435F1972E26A0022B534 /* VLCAddonListItem.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
VLCAddonListItem.m; sourceTree = "<group>"; };
+               7DF0994D23E71E5B007CA6EE /* NSMenu+VLCAdditions.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
"NSMenu+VLCAdditions.h"; sourceTree = "<group>"; };
+               7DF0994E23E71E76007CA6EE /* NSMenu+VLCAdditions.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
"NSMenu+VLCAdditions.m"; sourceTree = "<group>"; };
                7DF14FBC2270CB1C0008ABE4 /* 
VLCMediaSourceDeviceCollectionViewItem.xib */ = {isa = PBXFileReference; 
lastKnownFileType = file.xib; path = 
VLCMediaSourceDeviceCollectionViewItem.xib; sourceTree = "<group>"; };
                7DF812ED1B555A340052293C /* VLCPlaybackContinuityController.h 
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
VLCPlaybackContinuityController.h; sourceTree = "<group>"; };
                7DF812EE1B555A340052293C /* VLCPlaybackContinuityController.m 
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
VLCPlaybackContinuityController.m; sourceTree = "<group>"; };
@@ -1026,6 +1029,8 @@
                                7D28E6382275B7340098D30E /* 
NSFont+VLCAdditions.m */,
                                7D404ABD2281892C00B28EF4 /* 
NSView+VLCAdditions.h */,
                                7D404ABE2281892C00B28EF4 /* 
NSView+VLCAdditions.m */,
+                               7DF0994D23E71E5B007CA6EE /* 
NSMenu+VLCAdditions.h */,
+                               7DF0994E23E71E76007CA6EE /* 
NSMenu+VLCAdditions.m */,
                        );
                        path = extensions;
                        sourceTree = "<group>";
@@ -1823,6 +1828,7 @@
                                1C3113D51E508C6900D4DD76 /* 
VLCTextfieldPanelController.m in Sources */,
                                7DFBDCAE2269ED0C00B700A5 /* 
VLCLibraryVideoDataSource.m in Sources */,
                                1C3113D71E508C6900D4DD76 /* 
VLCPopupPanelController.m in Sources */,
+                               7DF0994F23E71E76007CA6EE /* 
NSMenu+VLCAdditions.m in Sources */,
                                7D445D8B22032B9200263D34 /* 
VLCPlaylistTableView.m in Sources */,
                                1C3113D91E508C6900D4DD76 /* 
VLCSimplePrefsController.m in Sources */,
                                7DFBDCC4226E445500B700A5 /* 
VLCMediaSourceBaseDataSource.m in Sources */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 2b665a04a6..eeb17c10d9 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -34,6 +34,8 @@ libmacosx_plugin_la_SOURCES = \
        gui/macosx/extensions/NSColor+VLCAdditions.m \
        gui/macosx/extensions/NSFont+VLCAdditions.h \
        gui/macosx/extensions/NSFont+VLCAdditions.m \
+       gui/macosx/extensions/NSMenu+VLCAdditions.h \
+       gui/macosx/extensions/NSMenu+VLCAdditions.m \
        gui/macosx/extensions/NSScreen+VLCAdditions.h \
        gui/macosx/extensions/NSScreen+VLCAdditions.m \
        gui/macosx/extensions/NSSound+VLCAdditions.h \
diff --git a/modules/gui/macosx/extensions/NSMenu+VLCAdditions.h 
b/modules/gui/macosx/extensions/NSMenu+VLCAdditions.h
new file mode 100644
index 0000000000..75fb85065a
--- /dev/null
+++ b/modules/gui/macosx/extensions/NSMenu+VLCAdditions.h
@@ -0,0 +1,35 @@
+/*****************************************************************************
+* NSMenu+ItemAddition.h: MacOS X interface module
+*****************************************************************************
+* Copyright (C) 2020 VLC authors and VideoLAN
+*
+* Author: Felix Paul Kühne <fkuehne at videolan dot org>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+*****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface NSMenu (VLCAdditions)
+
+/* NSMenu's property itemArray becomes writeable in 10.14 and above only
+ * so the following is provided as a convenience method to add multiple 
entries */
+- (void)addMenuItemsFromArray:(NSArray <NSMenuItem *>*)array;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/modules/gui/macosx/extensions/NSMenu+VLCAdditions.m 
b/modules/gui/macosx/extensions/NSMenu+VLCAdditions.m
new file mode 100644
index 0000000000..ec2b95a3d1
--- /dev/null
+++ b/modules/gui/macosx/extensions/NSMenu+VLCAdditions.m
@@ -0,0 +1,39 @@
+/*****************************************************************************
+* NSMenu+ItemAddition.m: MacOS X interface module
+*****************************************************************************
+* Copyright (C) 2020 VLC authors and VideoLAN
+*
+* Author: Felix Paul Kühne <fkuehne at videolan dot org>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+*****************************************************************************/
+
+#import "NSMenu+VLCAdditions.h"
+
+@implementation NSMenu (VLCAdditions)
+
+- (void)addMenuItemsFromArray:(NSArray <NSMenuItem *>*)array
+{
+    if (!array) {
+        return;
+    }
+
+    NSUInteger count = array.count;
+    for (NSUInteger x = 0; x < count; x++) {
+        [self addItem:array[x]];
+    }
+}
+
+@end
diff --git a/modules/gui/macosx/library/VLCLibraryMenuController.m 
b/modules/gui/macosx/library/VLCLibraryMenuController.m
index 53a365ae1c..e813d96f96 100644
--- a/modules/gui/macosx/library/VLCLibraryMenuController.m
+++ b/modules/gui/macosx/library/VLCLibraryMenuController.m
@@ -28,6 +28,7 @@
 #import "library/VLCLibraryInformationPanel.h"
 
 #import "extensions/NSString+Helpers.h"
+#import "extensions/NSMenu+VLCAdditions.h"
 
 @interface VLCLibraryMenuController ()
 {
@@ -63,7 +64,7 @@
     informationItem.target = self;
 
     _libraryMenu = [[NSMenu alloc] initWithTitle:@""];
-    _libraryMenu.itemArray = @[playItem, appendItem, revealItem, deleteItem, 
informationItem, [NSMenuItem separatorItem], addItem];
+    [_libraryMenu addMenuItemsFromArray:@[playItem, appendItem, revealItem, 
deleteItem, informationItem, [NSMenuItem separatorItem], addItem]];
 }
 
 - (void)popupMenuWithEvent:(NSEvent *)theEvent forView:(NSView *)theView
@@ -74,7 +75,7 @@
         NSMenu *minimalMenu = [[NSMenu alloc] initWithTitle:@""];
         NSMenuItem *addItem = [[NSMenuItem alloc] initWithTitle:_NS("Add Media 
Folder...") action:@selector(addMedia:) keyEquivalent:@""];
         addItem.target = self;
-        minimalMenu.itemArray = @[addItem];
+        [minimalMenu addItem:addItem];
         [NSMenu popUpContextMenu:minimalMenu withEvent:theEvent 
forView:theView];
     }
 }
diff --git a/modules/gui/macosx/playlist/VLCPlaylistMenuController.m 
b/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
index 2cb55cd40b..17879916df 100644
--- a/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
+++ b/modules/gui/macosx/playlist/VLCPlaylistMenuController.m
@@ -25,6 +25,7 @@
 #import "VLCPlaylistMenuController.h"
 
 #import "extensions/NSString+Helpers.h"
+#import "extensions/NSMenu+VLCAdditions.h"
 #import "main/VLCMain.h"
 #import "playlist/VLCPlaylistController.h"
 #import "playlist/VLCPlaylistModel.h"
@@ -86,7 +87,7 @@
     [_sortMenuItem 
setSubmenu:_playlistSortingMenuController.playlistSortingMenu];
 
     _playlistMenu = [[NSMenu alloc] init];
-    _playlistMenu.itemArray = @[_playMenuItem, _removeMenuItem, 
_revealInFinderMenuItem, _informationMenuItem, [NSMenuItem separatorItem], 
_addFilesToPlaylistMenuItem, _clearPlaylistMenuItem, _sortMenuItem];
+    [_playlistMenu addMenuItemsFromArray:@[_playMenuItem, _removeMenuItem, 
_revealInFinderMenuItem, _informationMenuItem, [NSMenuItem separatorItem], 
_addFilesToPlaylistMenuItem, _clearPlaylistMenuItem, _sortMenuItem]];
 }
 
 - (void)play:(id)sender
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 5a60e71ebc..3c99388345 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -445,6 +445,8 @@ modules/gui/macosx/extensions/NSColor+VLCAdditions.h
 modules/gui/macosx/extensions/NSColor+VLCAdditions.m
 modules/gui/macosx/extensions/NSFont+VLCAdditions.h
 modules/gui/macosx/extensions/NSFont+VLCAdditions.m
+modules/gui/macosx/extensions/NSMenu+VLCAdditions.h
+modules/gui/macosx/extensions/NSMenu+VLCAdditions.m
 modules/gui/macosx/extensions/NSScreen+VLCAdditions.h
 modules/gui/macosx/extensions/NSScreen+VLCAdditions.m
 modules/gui/macosx/extensions/NSSound+VLCAdditions.h

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to