[vlc-commits] [Git][videolan/vlc][master] 2 commits: macosx: Add ability for collection view data sources to set expected item sizes on section basis

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Sun Jul 20 09:14:34 UTC 2025



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 <developer at 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 <developer at 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;
 
+ at 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


More information about the vlc-commits mailing list