Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
62845687 by Claudio Cambra at 2023-12-15T07:42:39+00:00
macosx: Do not propagate click through library collection view supplementary
detail views
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
4315a7ba by Claudio Cambra at 2023-12-15T07:42:39+00:00
macosx: Add a property for deselecting collection view item upon click if
it's already selected
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
aa94f73e by Claudio Cambra at 2023-12-15T07:42:39+00:00
macosx: Implement deselection of collection view item when clicked if already
selected
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
1326d662 by Claudio Cambra at 2023-12-15T07:42:39+00:00
macosx: Implement indexPathForLibraryItem in VLCLibraryAudioGroupDataSource
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
4 changed files:
- modules/gui/macosx/library/VLCLibraryCollectionViewItem.h
- modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
- modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupDataSource.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewItem.h
=====================================
@@ -40,6 +40,8 @@ extern NSString *VLCLibraryCellIdentifier;
@property (class, readonly) const CGFloat bottomTextViewsHeight;
@property (class, readonly) const CGFloat videoHeightAspectRatioMultiplier;
+@property (readwrite, assign) BOOL deselectWhenClickedIfSelected;
+
@property (readwrite, assign) IBOutlet NSTextField *mediaTitleTextField;
@property (readwrite, assign) IBOutlet NSTextField *annotationTextField;
@property (readwrite, assign) IBOutlet NSTextField *unplayedIndicatorTextField;
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
=====================================
@@ -27,6 +27,8 @@
#import "extensions/NSColor+VLCAdditions.h"
#import "extensions/NSView+VLCAdditions.h"
+#import "library/VLCLibraryCollectionViewDataSource.h"
+#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryDataTypes.h"
#import "library/VLCLibraryImageCache.h"
@@ -112,6 +114,7 @@ const CGFloat
VLCLibraryCollectionViewItemMaximumDisplayedProgress = 0.95;
- (void)awakeFromNib
{
+ _deselectWhenClickedIfSelected = YES;
_videoImageViewAspectRatioConstraint = [NSLayoutConstraint
constraintWithItem:_mediaImageView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
@@ -289,6 +292,18 @@ const CGFloat
VLCLibraryCollectionViewItemMaximumDisplayedProgress = 0.95;
[_menuController setRepresentedItem:self.representedItem];
[_menuController popupMenuWithEvent:theEvent forView:self.view];
+ } else if (self.deselectWhenClickedIfSelected &&
+ self.selected &&
+ [self.collectionView.dataSource
conformsToProtocol:@protocol(VLCLibraryCollectionViewDataSource)]) {
+ NSObject<VLCLibraryCollectionViewDataSource> * const dataSource =
(NSObject<VLCLibraryCollectionViewDataSource> *)self.collectionView.dataSource;
+ NSIndexPath * const indexPath = [dataSource
indexPathForLibraryItem:self.representedItem.item];
+ NSSet<NSIndexPath *> * const indexPathSet = [NSSet
setWithObject:indexPath];
+ [self.collectionView deselectItemsAtIndexPaths:indexPathSet];
+
+ if ([self.collectionView.collectionViewLayout
isKindOfClass:[VLCLibraryCollectionViewFlowLayout class]]) {
+ VLCLibraryCollectionViewFlowLayout * const flowLayout =
(VLCLibraryCollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
+ [flowLayout collapseDetailSectionAtIndex:indexPath];
+ }
}
[super mouseDown:theEvent];
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
=====================================
@@ -36,7 +36,13 @@ static const CGFloat kBackgroundCornerRadius = 10.;
@implementation VLCLibraryCollectionViewSupplementaryDetailView
-- (void)drawRect:(NSRect)dirtyRect {
+- (void)mouseDown:(NSEvent *)event
+{
+ // Do not propagate the event as this will lead to subject collection view
item being deselected
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
if(NSEqualSizes(_arrowSize, NSZeroSize)) {
_arrowSize = NSMakeSize(kArrowWidth, kArrowHeight);
}
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioGroupDataSource.m
=====================================
@@ -225,4 +225,14 @@
viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
return self.representedListOfAlbums[indexPathItem];
}
+- (NSIndexPath
*)indexPathForLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
+{
+ if (libraryItem == nil) {
+ return nil;
+ }
+
+ const NSInteger arrayIdx = [self rowForLibraryItem:libraryItem];
+ return [NSIndexPath indexPathForItem:arrayIdx inSection:0];
+}
+
@end
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/9ca953e1d4dc05113457845315fe02a90fdcc007...1326d6628be54bd6fa9cfe421f71c4048b98427a
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/9ca953e1d4dc05113457845315fe02a90fdcc007...1326d6628be54bd6fa9cfe421f71c4048b98427a
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits