[vlc-commits] [Git][videolan/vlc][master] 3 commits: macosx: Use next responder and document-related properties for scrolling within VLCSubScrollView
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Feb 21 08:04:32 UTC 2026
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
df831bcc by Claudio Cambra at 2026-02-19T20:21:52+01:00
macosx: Use next responder and document-related properties for scrolling within VLCSubScrollView
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
32dc58bd by Claudio Cambra at 2026-02-19T20:21:52+01:00
macosx: Remove use of parentScrollView on VLCSubScrollView
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
9504c30e by Claudio Cambra at 2026-02-19T20:21:52+01:00
macosx: Remove now unused stack view scroll view properties in home view components
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
9 changed files:
- modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.h
- modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupDataSource.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.h
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.m
- modules/gui/macosx/views/VLCSubScrollView.h
- modules/gui/macosx/views/VLCSubScrollView.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.h
=====================================
@@ -35,7 +35,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, retain, nonatomic) VLCLibraryRepresentedItem *representedItem;
@property (readwrite) NSCollectionViewItem *selectedItem;
- at property (readwrite, weak) NSScrollView *parentScrollView;
@property (readwrite, assign, nonatomic) NSCollectionViewScrollDirection layoutScrollDirection;
@property (readwrite, weak) IBOutlet NSLayoutConstraint *contentViewTopConstraint;
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
=====================================
@@ -135,25 +135,6 @@ static const CGFloat kBackgroundCornerRadius = 10.;
[backgroundPath stroke];
}
-- (NSScrollView *)parentScrollView
-{
- if(_internalScrollView == nil) {
- return nil;
- }
-
- return _internalScrollView.parentScrollView;
-}
-
-- (void)setParentScrollView:(NSScrollView *)parentScrollView
-{
- if(_internalScrollView == nil) {
- NSLog(@"Library collection view supplementary view has no internal scroll view -- cannot set parent scrollview.");
- return;
- }
-
- _internalScrollView.parentScrollView = parentScrollView;
-}
-
- (BOOL)validConstraintProps
{
return _contentViewTopConstraint != nil &&
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
=====================================
@@ -870,7 +870,6 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
albumSupplementaryDetailView.representedItem = representedItem;
albumSupplementaryDetailView.selectedItem = [collectionView itemAtIndex:indexPath.item];
- albumSupplementaryDetailView.parentScrollView = VLCMain.sharedInstance.libraryWindow.audioCollectionViewScrollView;
albumSupplementaryDetailView.internalScrollView.scrollParentY = YES;
VLCLibraryCollectionViewFlowLayout *flowLayout = (VLCLibraryCollectionViewFlowLayout*)collectionView.collectionViewLayout;
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupDataSource.m
=====================================
@@ -386,7 +386,6 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
albumSupplementaryDetailView.representedItem = representedItem;
albumSupplementaryDetailView.selectedItem = [collectionView itemAtIndex:indexPath.item];
- albumSupplementaryDetailView.parentScrollView = VLCMain.sharedInstance.libraryWindow.audioCollectionViewScrollView;
albumSupplementaryDetailView.internalScrollView.scrollParentY = YES;
return albumSupplementaryDetailView;
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m
=====================================
@@ -109,7 +109,6 @@
- (void)setupGridViewController
{
_stackViewController = [[VLCLibraryHomeViewStackViewController alloc] init];
- self.stackViewController.collectionsStackViewScrollView = _homeLibraryStackViewScrollView;
self.stackViewController.collectionsStackView = _homeLibraryStackView;
}
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.h
=====================================
@@ -40,7 +40,6 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, assign, nonatomic) NSEdgeInsets collectionViewSectionInset;
@property (readwrite, weak, nonatomic) NSStackView *collectionsStackView;
- at property (readwrite, weak, nonatomic) NSScrollView *collectionsStackViewScrollView;
@property (readonly) VLCLibraryHomeViewActionsView *actionsView;
@property (readonly) VLCLibraryHeroView *heroView;
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewStackViewController.m
=====================================
@@ -310,20 +310,6 @@
}
}
-- (void)setCollectionsStackViewScrollView:(NSScrollView *)newScrollView
-{
- NSParameterAssert(newScrollView);
-
- _collectionsStackViewScrollView = newScrollView;
-
- for (NSView<VLCLibraryHomeViewContainerView> * const containerView in _containers) {
- if ([containerView isKindOfClass:VLCLibraryHomeViewVideoGridContainerView.class]) {
- VLCLibraryHomeViewVideoGridContainerView * const collectionViewContainerView = (VLCLibraryHomeViewVideoGridContainerView *)containerView;
- collectionViewContainerView.scrollView.parentScrollView = _collectionsStackViewScrollView;
- }
- }
-}
-
- (void)setCollectionViewItemSize:(NSSize)collectionViewItemSize
{
_collectionViewItemSize = collectionViewItemSize;
=====================================
modules/gui/macosx/views/VLCSubScrollView.h
=====================================
@@ -28,7 +28,6 @@ NS_ASSUME_NONNULL_BEGIN
@interface VLCSubScrollView : NSScrollView
- at property (readwrite, weak) NSScrollView *parentScrollView;
@property (readwrite, assign) BOOL scrollParentY;
@property (readwrite, assign) BOOL scrollParentX;
@property (readwrite, assign) BOOL scrollSelf;
=====================================
modules/gui/macosx/views/VLCSubScrollView.m
=====================================
@@ -51,30 +51,33 @@
- (void)scrollWheel:(NSEvent *)event
{
if (!_scrollSelf) {
- [_parentScrollView scrollWheel:event];
+ [self.nextResponder scrollWheel:event];
return;
}
- [super scrollWheel:event];
-
- if(_parentScrollView == nil || (!_scrollParentX && !_scrollParentY)) {
+ if (!_scrollParentX && !_scrollParentY) {
+ [super scrollWheel:event];
return;
}
- // Sometimes scroll views initialise with the Y value being almost 0, but not quite (e.g. 0.000824)
- const BOOL isViewAtYStartAndScrollUp = self.verticalScroller.floatValue <= 0.01 && event.deltaY > 0;
- const BOOL isViewAtYEndAndScrollDown = self.verticalScroller.floatValue >= 0.99 && event.deltaY < 0;
- const BOOL isViewAtXStartAndScrollLeft = self.horizontalScroller.floatValue <= 0.01 && event.deltaX > 0;
- const BOOL isViewAtXEndAndScrollRight = self.horizontalScroller.floatValue >= 0.99 && event.deltaX < 0;
+ const NSRect documentVisibleRect = self.documentVisibleRect;
+ const NSRect documentFrame = self.documentView.frame;
+
+ const BOOL isViewAtYStartAndScrollUp = NSMinY(documentVisibleRect) <= NSMinY(documentFrame) + 1.0 && event.deltaY > 0;
+ const BOOL isViewAtYEndAndScrollDown = NSMaxY(documentVisibleRect) >= NSMaxY(documentFrame) - 1.0 && event.deltaY < 0;
+ const BOOL isViewAtXStartAndScrollLeft = NSMinX(documentVisibleRect) <= NSMinX(documentFrame) + 1.0 && event.deltaX > 0;
+ const BOOL isViewAtXEndAndScrollRight = NSMaxX(documentVisibleRect) >= NSMaxX(documentFrame) - 1.0 && event.deltaX < 0;
- const BOOL isSubScrollViewScrollableY = self.documentView.frame.size.height > self.documentVisibleRect.size.height;
- const BOOL isSubScrollViewScrollableX = self.documentView.frame.size.width > self.documentVisibleRect.size.width;
+ const BOOL isSubScrollViewScrollableY = NSHeight(documentFrame) > NSHeight(documentVisibleRect);
+ const BOOL isSubScrollViewScrollableX = NSWidth(documentFrame) > NSWidth(documentVisibleRect);
const BOOL shouldScrollParentY = _scrollParentY && (!isSubScrollViewScrollableY || isViewAtYStartAndScrollUp || isViewAtYEndAndScrollDown);
const BOOL shouldScrollParentX = _scrollParentX && (!isSubScrollViewScrollableX || isViewAtXStartAndScrollLeft || isViewAtXEndAndScrollRight);
- if(shouldScrollParentY || shouldScrollParentX) {
- [_parentScrollView scrollWheel:event];
+ if (shouldScrollParentY || shouldScrollParentX) {
+ [self.nextResponder scrollWheel:event];
+ } else {
+ [super scrollWheel:event];
}
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/e91e01b0352722ad21893572779118282bbbc1d7...9504c30ea9e0bee6eb1ba1a5ff56ecd6b7e4d698
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/e91e01b0352722ad21893572779118282bbbc1d7...9504c30ea9e0bee6eb1ba1a5ff56ecd6b7e4d698
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list