Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
e87f3ac0 by Claudio Cambra at 2025-07-20T08:57:26+00:00
macosx: Add ability for collection view data sources to set expected item sizes
on section basis
Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>
- - - - -
dbadc381 by Claudio Cambra at 2025-07-20T08:57:26+00:00
macosx: Implement aspectRatioForSection in favorites data source
Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>
- - - - -
3 changed files:
- modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
- modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
- modules/gui/macosx/library/favorites-library/VLCLibraryFavoritesDataSource.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
=====================================
@@ -23,6 +23,7 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibraryDataSource.h"
+#import "library/VLCLibraryUIUnits.h"
NS_ASSUME_NONNULL_BEGIN
@@ -41,6 +42,10 @@ NS_ASSUME_NONNULL_BEGIN
- (void)reloadData;
+@optional
+- (VLCLibraryCollectionViewItemAspectRatio)collectionView:(NSCollectionView
*)collectionView
+ aspectRatioForSection:(NSInteger)section;
+
@end
NS_ASSUME_NONNULL_END
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDelegate.m
=====================================
@@ -73,11 +73,23 @@
return _staticItemSize;
}
- VLCLibraryCollectionViewFlowLayout * const collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout*)collectionViewLayout;
+ VLCLibraryCollectionViewFlowLayout * const collectionViewFlowLayout =
(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout;
if (collectionViewLayout) {
+ VLCLibraryCollectionViewItemAspectRatio aspectRatio =
_itemsAspectRatio;
+
+ if ([collectionView.dataSource
conformsToProtocol:@protocol(VLCLibraryCollectionViewDataSource)]) {
+ id<VLCLibraryCollectionViewDataSource> libraryDataSource =
+
(id<VLCLibraryCollectionViewDataSource>)collectionView.dataSource;
+
+ if ([libraryDataSource
respondsToSelector:@selector(collectionView:aspectRatioForSection:)]) {
+ aspectRatio = [libraryDataSource collectionView:collectionView
+
aspectRatioForSection:indexPath.section];
+ }
+ }
+
return [VLCLibraryUIUnits
adjustedCollectionViewItemSizeForCollectionView:collectionView
withLayout:collectionViewFlowLayout
-
withItemsAspectRatio:_itemsAspectRatio];
+
withItemsAspectRatio:aspectRatio];
}
return NSZeroSize;
=====================================
modules/gui/macosx/library/favorites-library/VLCLibraryFavoritesDataSource.m
=====================================
@@ -462,6 +462,15 @@
viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
#pragma mark - VLCLibraryCollectionViewDataSource
+- (VLCLibraryCollectionViewItemAspectRatio)collectionView:(NSCollectionView
*)collectionView
+ aspectRatioForSection:(NSInteger)section
+{
+ if ([self sectionForVisibleIndex:section] ==
VLCLibraryFavoritesSectionVideoMedia) {
+ return VLCLibraryCollectionViewItemAspectRatioVideoItem;
+ }
+ return VLCLibraryCollectionViewItemAspectRatioDefaultItem;
+}
+
- (id<VLCMediaLibraryItemProtocol>)libraryItemAtIndexPath:(NSIndexPath
*)indexPath
forCollectionView:(NSCollectionView
*)collectionView
{
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/b73fe9ec098c0a2e8a6ffaafe9033723b7c5c5de...dbadc38128b5d301ebfa7935dc4dafbf29b20c5a
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/b73fe9ec098c0a2e8a6ffaafe9033723b7c5c5de...dbadc38128b5d301ebfa7935dc4dafbf29b20c5a
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits