[vlc-commits] [Git][videolan/vlc][master] macosx: Horizontal scroll support on iCarousel
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Mon Jul 14 17:22:52 UTC 2025
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
69a30659 by Bob Moriasi at 2025-07-14T17:08:21+00:00
macosx: Horizontal scroll support on iCarousel
- - - - -
2 changed files:
- modules/gui/macosx/UI/VLCLibraryWindow.xib
- modules/gui/macosx/views/iCarousel/iCarousel.m
Changes:
=====================================
modules/gui/macosx/UI/VLCLibraryWindow.xib
=====================================
@@ -631,7 +631,7 @@
<rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
- <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HXH-MZ-tkf">
+ <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" id="HXH-MZ-tkf">
<rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
<clipView key="contentView" id="EeU-rT-tSP">
<rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
=====================================
modules/gui/macosx/views/iCarousel/iCarousel.m
=====================================
@@ -2348,6 +2348,44 @@ NSComparisonResult compareViewDepth(UIView *view1, UIView *view2, iCarousel *sel
}
}
+- (void)scrollWheel:(NSEvent *)event
+{
+ const CGFloat deltaX = event.scrollingDeltaX;
+ const CGFloat deltaY = event.scrollingDeltaY;
+
+ BOOL isHorizontalGesture = fabs(deltaX) > fabs(deltaY);
+ BOOL isTrackpadGesture = event.hasPreciseScrollingDeltas &&
+ (event.phase != NSEventPhaseNone || event.momentumPhase != NSEventPhaseNone);
+
+ if (isHorizontalGesture && fabs(deltaX) > 0.1 && _scrollEnabled) {
+ if (isTrackpadGesture) {
+ CGFloat currentOffset = self.scrollOffset;
+ CGFloat newOffset = currentOffset - (deltaX / 600.0);
+
+ const NSInteger numberOfItems = self.numberOfItems;
+ if (numberOfItems > 0) {
+ newOffset = MAX(0.0, MIN((CGFloat)(numberOfItems - 1), newOffset));
+ self.scrollOffset = newOffset;
+ }
+ [self scrollToItemAtIndex:self.currentItemIndex animated:YES];
+ } else {
+ const NSInteger currentIndex = self.currentItemIndex;
+ const NSInteger numberOfItems = self.numberOfItems;
+
+ if (deltaX > 0.1 && currentIndex > 0) {
+ [self scrollToItemAtIndex:(currentIndex - 1) animated:YES];
+ } else if (deltaX < -0.1 && currentIndex < numberOfItems - 1) {
+ [self scrollToItemAtIndex:(currentIndex + 1) animated:YES];
+ }
+ }
+ return;
+ }
+
+ if (fabs(deltaY) > 0.5 && fabs(deltaX) <= 0.1) {
+ [super scrollWheel:event];
+ }
+}
+
#pragma mark -
#pragma mark Keyboard control
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/69a306591c27daa4904681f64082f2e5d2555c33
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/69a306591c27daa4904681f64082f2e5d2555c33
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