[vlc-commits] [Git][videolan/vlc][master] macosx: Fix the grid vs list view switching in the library

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Fri Jul 1 09:56:54 UTC 2022



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
47a6e95a by Claudio Cambra at 2022-07-01T09:37:13+00:00
macosx: Fix the grid vs list view switching in the library

Prior to this PR, the buttons would not work in the video or audio
views and the selection made in these views would not be respected
when switching to the media source views.

Signed-off-by: Claudio Cambra <claudio.cambra at gmail.com>

- - - - -


2 changed files:

- modules/gui/macosx/library/VLCLibraryWindow.m
- modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -86,6 +86,7 @@ static NSArray<NSLayoutConstraint *> *audioPlaceholderImageViewSizeConstraints;
     VLCFSPanelController *_fspanel;
     
     NSInteger _currentSelectedSegment;
+    NSInteger _currentSelectedViewModeSegment;
 }
 
 @property (nonatomic, readwrite, strong) IBOutlet NSView *emptyLibraryView;
@@ -463,11 +464,14 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
 
 - (void)segmentedControlAction:(id)sender
 {
-    if (_segmentedTitleControl.selectedSegment == _currentSelectedSegment) {
+    if (_segmentedTitleControl.selectedSegment == _currentSelectedSegment && 
+        _gridVsListSegmentedControl.selectedSegment == _currentSelectedViewModeSegment) {
         return;
     }
     
     _currentSelectedSegment = _segmentedTitleControl.selectedSegment;
+    _currentSelectedViewModeSegment = _gridVsListSegmentedControl.selectedSegment;
+
     switch (_currentSelectedSegment) {
         case 0:
             [self showVideoLibrary];
@@ -522,6 +526,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
     _optionBarView.hidden = YES;
     _audioSegmentedControl.hidden = YES;
 
+    self.gridVsListSegmentedControl.target = self;
+    self.gridVsListSegmentedControl.action = @selector(segmentedControlAction:);
 }
 
 - (void)showAudioLibrary


=====================================
modules/gui/macosx/media-source/VLCMediaSourceBaseDataSource.m
=====================================
@@ -114,7 +114,14 @@ NSString *VLCMediaSourceTableViewCellIdentifier = @"VLCMediaSourceTableViewCellI
 {
     self.gridVsListSegmentedControl.action = @selector(switchGridOrListMode:);
     self.gridVsListSegmentedControl.target = self;
-    self.gridVsListSegmentedControl.selectedSegment = _gridViewMode ? 0 : 1;
+
+    // Since we call switchGridOrListMode to do the actual reloading of the views,
+    // we set the gridViewMode to exactly what the segmented control ISN'T set to,
+    // as switchGridOrListMode will switch the state
+
+    // (The segmented control has the grid view button first, list view button second)
+    _gridViewMode = self.gridVsListSegmentedControl.selectedSegment == 1;
+    [self switchGridOrListMode:self];
 }
 
 - (void)loadMediaSources
@@ -430,10 +437,12 @@ referenceSizeForHeaderInSection:(NSInteger)section
     if (_gridViewMode) {
         self.collectionViewScrollView.hidden = NO;
         self.tableView.hidden = YES;
+        self.gridVsListSegmentedControl.selectedSegment = 0;
         [self.collectionView reloadData];
     } else {
         self.collectionViewScrollView.hidden = YES;
         self.tableView.hidden = NO;
+        self.gridVsListSegmentedControl.selectedSegment = 1;
         [self.tableView reloadData];
     }
 }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/47a6e95a74af2c36d120db37ae53c7e3684a77c6

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/47a6e95a74af2c36d120db37ae53c7e3684a77c6
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