[vlc-commits] [Git][videolan/vlc][master] macosx: move nib loading helper to NSView category
Jean-Baptiste Kempf (@jbk)
gitlab at videolan.org
Sat May 9 17:30:32 UTC 2026
Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC
Commits:
fc961c99 by Serhii Bykov at 2026-05-09T19:15:49+02:00
macosx: move nib loading helper to NSView category
- - - - -
26 changed files:
- modules/gui/macosx/extensions/NSView+VLCAdditions.h
- modules/gui/macosx/extensions/NSView+VLCAdditions.m
- modules/gui/macosx/library/VLCLibraryCarouselViewItemView.h
- modules/gui/macosx/library/VLCLibraryCarouselViewItemView.m
- modules/gui/macosx/library/VLCLibraryHeroView.h
- modules/gui/macosx/library/VLCLibraryHeroView.m
- modules/gui/macosx/library/VLCLibraryTableCellView.h
- modules/gui/macosx/library/VLCLibraryTableCellView.m
- modules/gui/macosx/library/VLCLibraryTableViewDelegate.h
- modules/gui/macosx/library/VLCLibraryTableViewDelegate.m
- modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.h
- modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.m
- modules/gui/macosx/library/audio-library/VLCLibraryAlbumTracksTableViewDelegate.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupTableViewDelegate.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioTableViewDelegate.m
- modules/gui/macosx/library/audio-library/VLCLibrarySongTableCellView.h
- modules/gui/macosx/library/audio-library/VLCLibrarySongTableCellView.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewActionsView.h
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewActionsView.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.m
- modules/gui/macosx/library/video-library/VLCLibraryVideoTableViewDelegate.m
- modules/gui/macosx/playqueue/VLCPlayQueueDataSource.m
- modules/gui/macosx/windows/video/VLCMainVideoViewAudioMediaDecorativeView.h
- modules/gui/macosx/windows/video/VLCMainVideoViewAudioMediaDecorativeView.m
Changes:
=====================================
modules/gui/macosx/extensions/NSView+VLCAdditions.h
=====================================
@@ -28,6 +28,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface NSView (VLCAdditions)
+ (instancetype)fromNibNamed:(NSString *)nibName withClass:(Class)viewClass withOwner:(id)owner;
++ (instancetype)fromNibWithOwner:(id)owner;
@property (readonly) BOOL shouldShowDarkAppearance;
=====================================
modules/gui/macosx/extensions/NSView+VLCAdditions.m
=====================================
@@ -27,6 +27,11 @@
@implementation NSView (VLCAdditions)
++ (instancetype)fromNibWithOwner:(id)owner
+{
+ return [self fromNibNamed:NSStringFromClass(self) withClass:self withOwner:owner];
+}
+
+ (instancetype)fromNibNamed:(NSString *)nibName withClass:(Class)viewClass withOwner:(id)owner
{
/* the following code saves us an instance of NSViewController which we don't need */
=====================================
modules/gui/macosx/library/VLCLibraryCarouselViewItemView.h
=====================================
@@ -44,8 +44,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, nonatomic) BOOL selected;
-+ (instancetype)fromNibWithOwner:(id)owner;
-
- (void)playRepresentedItem;
@end
=====================================
modules/gui/macosx/library/VLCLibraryCarouselViewItemView.m
=====================================
@@ -46,13 +46,6 @@
@implementation VLCLibraryCarouselViewItemView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibraryCarouselViewItemView *)[NSView fromNibNamed:@"VLCLibraryCarouselViewItemView"
- withClass:VLCLibraryCarouselViewItemView.class
- withOwner:owner];
-}
-
- (instancetype)init
{
self = [super init];
=====================================
modules/gui/macosx/library/VLCLibraryHeroView.h
=====================================
@@ -38,8 +38,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, nonatomic) VLCLibraryRepresentedItem *representedItem;
-+ (instancetype)fromNibWithOwner:(id)owner;
-
- (IBAction)playRepresentedItem:(id)sender;
- (void)setOptimalRepresentedItem;
=====================================
modules/gui/macosx/library/VLCLibraryHeroView.m
=====================================
@@ -45,13 +45,6 @@
@implementation VLCLibraryHeroView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibraryHeroView*)[NSView fromNibNamed:@"VLCLibraryHeroView"
- withClass:VLCLibraryHeroView.class
- withOwner:owner];
-}
-
- (void)awakeFromNib
{
self.largeImageView.contentGravity = VLCImageViewContentGravityResizeAspectFill;
=====================================
modules/gui/macosx/library/VLCLibraryTableCellView.h
=====================================
@@ -36,8 +36,6 @@ extern NSString * const VLCLibraryTableCellViewIdentifier;
@interface VLCLibraryTableCellView : NSTableCellView<VLCLibraryTableCellViewProtocol>
-+ (instancetype)fromNibWithOwner:(id)owner;
-
@property (readwrite, weak) IBOutlet VLCTrackingView *trackingView;
@property (readwrite, weak) IBOutlet NSTextField *singlePrimaryTitleTextField;
@property (readwrite, weak) IBOutlet NSTextField *secondaryTitleTextField;
=====================================
modules/gui/macosx/library/VLCLibraryTableCellView.m
=====================================
@@ -47,13 +47,6 @@ NSString * const VLCLibraryTableCellViewIdentifier = @"VLCLibraryTableCellViewId
@implementation VLCLibraryTableCellView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibraryTableCellView*)[NSView fromNibNamed:NSStringFromClass(VLCLibraryTableCellView.class)
- withClass:[VLCLibraryTableCellView class]
- withOwner:owner];
-}
-
- (void)awakeFromNib
{
[self prepareForReuse];
=====================================
modules/gui/macosx/library/VLCLibraryTableViewDelegate.h
=====================================
@@ -22,12 +22,15 @@
#import <Cocoa/Cocoa.h>
+#import "library/VLCLibraryTableCellViewProtocol.h"
+
NS_ASSUME_NONNULL_BEGIN
@interface VLCLibraryTableViewDelegate : NSObject <NSTableViewDelegate>
@property (readwrite, assign) NSString *cellViewIdentifier;
- at property (readwrite, assign) Class cellViewClass;
+
+- (NSView<VLCLibraryTableCellViewProtocol> *)makeCellView;
@end
=====================================
modules/gui/macosx/library/VLCLibraryTableViewDelegate.m
=====================================
@@ -23,6 +23,7 @@
#import "VLCLibraryTableViewDelegate.h"
#import "extensions/NSColor+VLCAdditions.h"
+#import "extensions/NSView+VLCAdditions.h"
#import "extensions/NSString+Helpers.h"
#import "library/VLCInputItem.h"
@@ -44,11 +45,15 @@
self = [super init];
if (self) {
self.cellViewIdentifier = @"VLCLibraryTableViewCellIdentifier";
- self.cellViewClass = [VLCLibraryTableCellView class];
}
return self;
}
+- (NSView<VLCLibraryTableCellViewProtocol> *)makeCellView
+{
+ return [VLCLibraryTableCellView fromNibWithOwner:self];
+}
+
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
if (![tableView.dataSource conformsToProtocol:@protocol(VLCLibraryTableViewDataSource)]) {
@@ -60,8 +65,8 @@
NSView<VLCLibraryTableCellViewProtocol> * cellView = (NSView<VLCLibraryTableCellViewProtocol> *)[tableView makeViewWithIdentifier:self.cellViewIdentifier owner:self];
- if (cellView == nil && [self.cellViewClass respondsToSelector:@selector(fromNibWithOwner:)]) {
- cellView = [self.cellViewClass fromNibWithOwner:self];
+ if (cellView == nil) {
+ cellView = [self makeCellView];
cellView.identifier = self.cellViewIdentifier;
}
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.h
=====================================
@@ -38,7 +38,6 @@ extern NSString * const VLCLibraryAlbumTableCellTableViewColumnIdentifier;
@property (class, readonly) CGFloat defaultHeight;
-+ (instancetype)fromNibWithOwner:(id)owner;
+ (CGFloat)heightForAlbum:(VLCMediaLibraryAlbum *)album;
@property (readwrite, weak) IBOutlet VLCTrackingView *trackingView;
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAlbumTableCellView.m
=====================================
@@ -80,13 +80,6 @@ const CGFloat VLCLibraryAlbumTableCellViewDefaultHeight = 168.;
@implementation VLCLibraryAlbumTableCellView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibraryAlbumTableCellView*)[NSView fromNibNamed:@"VLCLibraryAlbumTableCellView"
- withClass:[VLCLibraryAlbumTableCellView class]
- withOwner:owner];
-}
-
+ (CGFloat)defaultHeight
{
return VLCLibraryAlbumTableCellViewDefaultHeight;
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAlbumTracksTableViewDelegate.m
=====================================
@@ -22,6 +22,8 @@
#import "VLCLibraryAlbumTracksTableViewDelegate.h"
+#import "extensions/NSView+VLCAdditions.h"
+
#import "library/audio-library/VLCLibrarySongTableCellView.h"
@implementation VLCLibraryAlbumTracksTableViewDelegate
@@ -31,10 +33,14 @@
self = [super init];
if (self) {
self.cellViewIdentifier = VLCAudioLibrarySongCellIdentifier;
- self.cellViewClass = [VLCLibrarySongTableCellView class];
}
return self;
}
+- (NSView<VLCLibraryTableCellViewProtocol> *)makeCellView
+{
+ return [VLCLibrarySongTableCellView fromNibWithOwner:self];
+}
+
@end
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
=====================================
@@ -22,6 +22,8 @@
#import "VLCLibraryAudioDataSource.h"
+#import "extensions/NSView+VLCAdditions.h"
+
#import "main/VLCMain.h"
#import "library/VLCInputItem.h"
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupTableViewDelegate.m
=====================================
@@ -22,6 +22,8 @@
#import "VLCLibraryAudioGroupTableViewDelegate.h"
+#import "extensions/NSView+VLCAdditions.h"
+
#import "VLCLibraryAlbumTableCellView.h"
#import "VLCLibraryAudioDataSource.h"
@@ -35,11 +37,15 @@
self = [super init];
if (self) {
self.cellViewIdentifier = VLCAudioLibraryCellIdentifier;
- self.cellViewClass = [VLCLibraryAlbumTableCellView class];
}
return self;
}
+- (NSView<VLCLibraryTableCellViewProtocol> *)makeCellView
+{
+ return [VLCLibraryAlbumTableCellView fromNibWithOwner:self];
+}
+
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex
{
// We use this with nested table views, since the table view cell is the VLCLibraryAlbumTableCellView.
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioTableViewDelegate.m
=====================================
@@ -38,7 +38,6 @@
self = [super init];
if (self) {
self.cellViewIdentifier = VLCAudioLibraryCellIdentifier;
- self.cellViewClass = [VLCLibraryTableCellView class];
}
return self;
}
=====================================
modules/gui/macosx/library/audio-library/VLCLibrarySongTableCellView.h
=====================================
@@ -34,8 +34,6 @@ NS_ASSUME_NONNULL_BEGIN
extern NSString *VLCAudioLibrarySongCellIdentifier;
-+ (instancetype)fromNibWithOwner:(id)owner;
-
@property (readwrite, weak) IBOutlet VLCTrackingView *trackingView;
@property (readwrite, weak) IBOutlet NSTextField *songNameTextField;
@property (readwrite, weak) IBOutlet NSTextField *durationTextField;
=====================================
modules/gui/macosx/library/audio-library/VLCLibrarySongTableCellView.m
=====================================
@@ -52,13 +52,6 @@ NSString *VLCAudioLibrarySongCellIdentifier = @"VLCAudioLibrarySongCellIdentifie
@implementation VLCLibrarySongTableCellView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibrarySongTableCellView*)[NSView fromNibNamed:@"VLCLibrarySongTableCellView"
- withClass:[VLCLibrarySongTableCellView class]
- withOwner:owner];
-}
-
- (void)awakeFromNib
{
self.playInstantlyButton.target = self;
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewActionsView.h
=====================================
@@ -32,8 +32,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, weak) IBOutlet NSButton *openCaptureDeviceButton;
@property (readwrite, weak) IBOutlet NSButton *openBrowseButton;
-+ (instancetype)fromNibWithOwner:(id)owner;
-
- (IBAction)openFileAction:(id)sender;
- (IBAction)openDiscAction:(id)sender;
- (IBAction)openUrlAction:(id)sender;
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewActionsView.m
=====================================
@@ -30,14 +30,6 @@
@implementation VLCLibraryHomeViewActionsView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCLibraryHomeViewActionsView*)[NSView fromNibNamed:@"VLCLibraryHomeViewActionsView"
- withClass:VLCLibraryHomeViewActionsView.class
- withOwner:owner];
-}
-
-
- (void)awakeFromNib
{
[super awakeFromNib];
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.m
=====================================
@@ -25,6 +25,8 @@
#import "library/VLCLibraryCollectionViewDelegate.h"
#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
+#import "extensions/NSView+VLCAdditions.h"
+
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryHeroView.h"
#import "library/VLCLibraryModel.h"
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.m
=====================================
@@ -22,6 +22,8 @@
#import "VLCLibraryHomeViewVideoContainerViewDataSource.h"
+#import "extensions/NSView+VLCAdditions.h"
+
#import "library/VLCLibraryCarouselViewItemView.h"
#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewItem.h"
=====================================
modules/gui/macosx/library/video-library/VLCLibraryVideoTableViewDelegate.m
=====================================
@@ -41,7 +41,6 @@
self = [super init];
if (self) {
self.cellViewIdentifier = @"VLCVideoLibraryTableViewCellIdentifier";
- self.cellViewClass = [VLCLibraryTableCellView class];
}
return self;
}
=====================================
modules/gui/macosx/playqueue/VLCPlayQueueDataSource.m
=====================================
@@ -23,6 +23,7 @@
#import "VLCPlayQueueDataSource.h"
#import "extensions/NSString+Helpers.h"
+#import "extensions/NSView+VLCAdditions.h"
#import "main/VLCMain.h"
#import "playqueue/VLCPlayQueueController.h"
#import "playqueue/VLCPlayQueueTableCellView.h"
@@ -72,20 +73,11 @@ static NSString *VLCPlayQueueCellIdentifier = @"VLCPlayQueueCellIdentifier";
[tableView makeViewWithIdentifier:VLCPlayQueueCellIdentifier owner:self];
if (cellView == nil) {
- /* the following code saves us an instance of NSViewController which we don't need */
- NSNib *nib = [[NSNib alloc] initWithNibNamed:@"VLCPlayQueueTableCellView" bundle:nil];
- NSArray *topLevelObjects;
- if (![nib instantiateWithOwner:self topLevelObjects:&topLevelObjects]) {
+ cellView = [VLCPlayQueueTableCellView fromNibWithOwner:self];
+ if (cellView == nil) {
msg_Err(getIntf(), "Failed to load nib file to show playlist items");
return nil;
}
-
- for (id topLevelObject in topLevelObjects) {
- if ([topLevelObject isKindOfClass:[VLCPlayQueueTableCellView class]]) {
- cellView = topLevelObject;
- break;
- }
- }
cellView.identifier = VLCPlayQueueCellIdentifier;
}
=====================================
modules/gui/macosx/windows/video/VLCMainVideoViewAudioMediaDecorativeView.h
=====================================
@@ -26,8 +26,6 @@ NS_ASSUME_NONNULL_BEGIN
@interface VLCMainVideoViewAudioMediaDecorativeView : NSView
-+ (instancetype)fromNibWithOwner:(id)owner;
-
@property (readwrite, strong) IBOutlet NSImageView *foregroundCoverArtView;
@property (readwrite, strong) IBOutlet NSImageView *backgroundCoverArtView;
@property (readwrite, strong) IBOutlet NSVisualEffectView *backgroundVisualEffectView;
=====================================
modules/gui/macosx/windows/video/VLCMainVideoViewAudioMediaDecorativeView.m
=====================================
@@ -44,13 +44,6 @@
@implementation VLCMainVideoViewAudioMediaDecorativeView
-+ (instancetype)fromNibWithOwner:(id)owner
-{
- return (VLCMainVideoViewAudioMediaDecorativeView*)[NSView fromNibNamed:@"VLCMainVideoViewAudioMediaDecorativeView"
- withClass:[VLCMainVideoViewAudioMediaDecorativeView class]
- withOwner:owner];
-}
-
- (void)awakeFromNib
{
_lyricsEntries = @[];
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/fc961c9941054d751760dbd60ab68d2251f558b4
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/fc961c9941054d751760dbd60ab68d2251f558b4
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list