[vlc-commits] [Git][videolan/vlc][master] 2 commits: macosx: Modify VLCTrackingView to support showing/hiding multiple views
Jean-Baptiste Kempf (@jbk)
gitlab at videolan.org
Tue Jun 9 06:15:16 UTC 2026
Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC
Commits:
e282270b by Claudio Cambra at 2026-06-09T07:45:59+02:00
macosx: Modify VLCTrackingView to support showing/hiding multiple views
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
135b3b80 by Claudio Cambra at 2026-06-09T07:45:59+02:00
macosx: Also hide 3-dot enqueing button on collection view items until hover
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
4 changed files:
- modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
- modules/gui/macosx/library/VLCLibraryWindow.m
- modules/gui/macosx/views/VLCTrackingView.h
- modules/gui/macosx/views/VLCTrackingView.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
=====================================
@@ -144,7 +144,7 @@ const CGFloat VLCLibraryCollectionViewItemMaximumDisplayedProgress = 0.95;
#endif
}
- [(VLCTrackingView *)self.view setViewToHide:self.playInstantlyButton];
+ [(VLCTrackingView *)self.view setViewsToHide:@[self.playInstantlyButton, self.addToPlayQueueButton]];
self.secondaryInfoTextField.textColor = NSColor.VLClibrarySubtitleColor;
self.annotationTextField.font = NSFont.VLCLibraryItemAnnotationFont;
self.annotationTextField.textColor = NSColor.VLClibraryAnnotationColor;
@@ -181,7 +181,8 @@ const CGFloat VLCLibraryCollectionViewItemMaximumDisplayedProgress = 0.95;
- (void)prepareForReuse
{
[super prepareForReuse];
- _playInstantlyButton.hidden = YES;
+ self.playInstantlyButton.hidden = YES;
+ self.addToPlayQueueButton.hidden = YES;
_mediaTitleTextField.stringValue = @"";
_secondaryInfoTextField.stringValue = [NSString stringWithTime:0];
_mediaImageView.image = nil;
=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -470,7 +470,9 @@ static int ShowController(vlc_object_t * __unused p_this,
self.artworkButton.enabled = !artworkButtonDisabled;
self.artworkButton.hidden = artworkButtonDisabled;
self.controlsBar.thumbnailTrackingView.enabled = !artworkButtonDisabled;
- self.controlsBar.thumbnailTrackingView.viewToHide.hidden = artworkButtonDisabled;
+ for (NSView * const view in self.controlsBar.thumbnailTrackingView.viewsToHide) {
+ view.hidden = artworkButtonDisabled;
+ }
}
- (void)configureArtworkButtonLiveVideoView
=====================================
modules/gui/macosx/views/VLCTrackingView.h
=====================================
@@ -30,11 +30,14 @@ typedef void(^EnterExitBlock)(void);
@property (readwrite) BOOL enabled;
@property (readwrite) BOOL animatesTransition;
- at property (readwrite, assign, nullable) NSView *viewToHide; // Hide when mouse out
- at property (readwrite, assign, nullable) NSView *viewToShow; // Show when mouse out
+ at property (readwrite, strong, nullable) NSArray<NSView *> *viewsToHide; // Hide when mouse out
+ at property (readwrite, strong, nullable) NSArray<NSView *> *viewsToShow; // Show when mouse out
@property (readwrite, strong, nullable) EnterExitBlock mouseEnteredBlock;
@property (readwrite, strong, nullable) EnterExitBlock mouseExitedBlock;
+- (void)setViewToHide:(nullable NSView *)view;
+- (void)setViewToShow:(nullable NSView *)view;
+
@end
NS_ASSUME_NONNULL_END
=====================================
modules/gui/macosx/views/VLCTrackingView.m
=====================================
@@ -65,6 +65,16 @@
_enabled = YES;
}
+- (void)setViewToHide:(nullable NSView *)view
+{
+ self.viewsToHide = view ? @[view] : nil;
+}
+
+- (void)setViewToShow:(nullable NSView *)view
+{
+ self.viewsToShow = view ? @[view] : nil;
+}
+
- (void)performTransition
{
if (self.animatesTransition) {
@@ -72,26 +82,42 @@
const BOOL hideVTS = _mouseIn;
const BOOL startMouseIn = _mouseIn;
- __weak typeof(self.viewToHide) weakViewToHide = self.viewToHide;
- __weak typeof(self.viewToShow) weakViewToShow = self.viewToShow;
+ __weak typeof(self) weakSelf = self;
- weakViewToHide.hidden = NO;
- weakViewToShow.hidden = NO;
+ for (NSView * const view in self.viewsToHide) {
+ view.hidden = NO;
+ }
+ for (NSView * const view in self.viewsToShow) {
+ view.hidden = NO;
+ }
[NSAnimationContext runAnimationGroup:^(NSAnimationContext * const context){
NSAnimationContext.currentContext.duration = 0.3;
- weakViewToHide.animator.alphaValue = hideVTH ? 0.0 : 1.0;
- weakViewToShow.animator.alphaValue = hideVTS ? 0.0 : 1.0;
+ for (NSView * const view in weakSelf.viewsToHide) {
+ view.animator.alphaValue = hideVTH ? 0.0 : 1.0;
+ }
+ for (NSView * const view in weakSelf.viewsToShow) {
+ view.animator.alphaValue = hideVTS ? 0.0 : 1.0;
+ }
} completionHandler:^{
- if (startMouseIn != self->_mouseIn) {
+ __strong typeof(weakSelf) strongSelf = weakSelf;
+ if (!strongSelf || startMouseIn != strongSelf->_mouseIn) {
return;
}
- weakViewToHide.hidden = hideVTH;
- weakViewToShow.hidden = hideVTS;
+ for (NSView * const view in strongSelf.viewsToHide) {
+ view.hidden = hideVTH;
+ }
+ for (NSView * const view in strongSelf.viewsToShow) {
+ view.hidden = hideVTS;
+ }
}];
} else {
- self.viewToHide.hidden = !_mouseIn;
- self.viewToShow.hidden = _mouseIn;
+ for (NSView * const view in self.viewsToHide) {
+ view.hidden = !_mouseIn;
+ }
+ for (NSView * const view in self.viewsToShow) {
+ view.hidden = _mouseIn;
+ }
}
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/84db002877000d02e985c6cbcde6026626fc35ff...135b3b80bb4340ece64bb2e5263add7c9f48e9cf
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/84db002877000d02e985c6cbcde6026626fc35ff...135b3b80bb4340ece64bb2e5263add7c9f48e9cf
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