Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
c1e52461 by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Stop appending library navigation states to the navigation stack each 
time some library navigation happens

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
ef4a062b by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Stop paying attention to library segments in navigation stack and states

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
c9526822 by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Fix back/forward buttons not updating the collection or table views in 
media source view

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
92540df4 by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Fix crashing when pushing forward button in media source view

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
248fd114 by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Add 'clear' method to VLCLibraryNavigationStack

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
d99fb8ed by Claudio Cambra at 2023-02-12T16:27:16+00:00
macosx: Clear the library navigation stack when the media source view is changed

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -


10 changed files:

- modules/gui/macosx/library/VLCLibraryNavigationStack.h
- modules/gui/macosx/library/VLCLibraryNavigationStack.m
- modules/gui/macosx/library/VLCLibraryNavigationState.h
- modules/gui/macosx/library/VLCLibraryNavigationState.m
- modules/gui/macosx/library/VLCLibraryWindow.m
- modules/gui/macosx/library/VLCLibraryWindowController.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
- modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m
- modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryNavigationStack.h
=====================================
@@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)forwards;
 
 - (void)appendCurrentLibraryState;
+- (void)clear;
 
 @end
 


=====================================
modules/gui/macosx/library/VLCLibraryNavigationStack.m
=====================================
@@ -175,16 +175,16 @@
         return;
     }
 
-    [_delegate.segmentedTitleControl 
setSelectedSegment:state.libraryWindowSelectedSegment];
-    [_delegate.audioSegmentedControl 
setSelectedSegment:state.audioLibraryViewSelectedSegment];
-    [_delegate.gridVsListSegmentedControl 
setSelectedSegment:state.viewModeSelectedSegment];
     [_delegate.libraryMediaSourceViewController.baseDataSource 
setChildDataSource:state.currentMediaSource];
     [_delegate.libraryMediaSourceViewController.baseDataSource.childDataSource 
setNodeToDisplay:state.currentNodeDisplayed];
 
-    [_delegate segmentedControlAction:self];
-    [_delegate.libraryAudioViewController segmentedControlAction:self];
-    [_delegate.libraryMediaSourceViewController.baseDataSource 
setGridOrListMode:self];
+    [self updateDelegateNavigationButtons];
+}
 
+- (void)clear
+{
+    _navigationStates = [NSMutableArray array];
+    _currentPosition = nil;
     [self updateDelegateNavigationButtons];
 }
 


=====================================
modules/gui/macosx/library/VLCLibraryNavigationState.h
=====================================
@@ -31,9 +31,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface VLCLibraryNavigationState : NSObject
 
-@property (readonly) NSInteger libraryWindowSelectedSegment;
-@property (readonly) NSInteger viewModeSelectedSegment;
-@property (readonly) NSInteger audioLibraryViewSelectedSegment;
 @property (readonly) VLCMediaSourceDataSource *currentMediaSource;
 @property (readonly) VLCInputNode *currentNodeDisplayed;
 


=====================================
modules/gui/macosx/library/VLCLibraryNavigationState.m
=====================================
@@ -35,9 +35,6 @@
     VLCLibraryNavigationState* navState = [super init];
 
     if(navState) {
-        _libraryWindowSelectedSegment = 
libraryWindow.segmentedTitleControl.selectedSegment;
-        _viewModeSelectedSegment = 
libraryWindow.gridVsListSegmentedControl.selectedSegment;
-        _audioLibraryViewSelectedSegment = 
libraryWindow.audioSegmentedControl.selectedSegment;
         _currentMediaSource = 
libraryWindow.libraryMediaSourceViewController.baseDataSource.childDataSource;
         _currentNodeDisplayed = 
libraryWindow.libraryMediaSourceViewController.baseDataSource.childDataSource.nodeToDisplay;
     }


=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -411,10 +411,6 @@ static void addShadow(NSImageView *__unsafe_unretained 
imageView)
 
     [self setViewForSelectedSegment];
     [self invalidateRestorableState];
-
-    if(sender != _navigationStack) {
-        [self.navigationStack appendCurrentLibraryState];
-    }
 }
 
 - (void)hideToolbarItem:(NSToolbarItem *)toolbarItem
@@ -529,6 +525,7 @@ static void addShadow(NSImageView *__unsafe_unretained 
imageView)
 {
     NSParameterAssert(segment == VLCLibraryBrowseSegment || segment == 
VLCLibraryStreamsSegment);
 
+    [self.navigationStack clear];
     [self setForwardsBackwardsToolbarItemsVisible:YES];
     [self setSortOrderToolbarItemVisible:NO];
     [self setLibrarySearchToolbarItemVisible:NO];


=====================================
modules/gui/macosx/library/VLCLibraryWindowController.m
=====================================
@@ -75,15 +75,11 @@
     [libraryWindow.gridVsListSegmentedControl 
setSelectedSegment:rememberedSelectedLibraryViewModeSegment];
     [libraryWindow.audioSegmentedControl 
setSelectedSegment:rememberedSelectedLibraryViewAudioSegment];
 
-    // We don't want to add these to the navigation stack...
-    [libraryWindow segmentedControlAction:libraryWindow.navigationStack];
+    [libraryWindow segmentedControlAction:self];
     if (rememberedSelectedLibrarySegment == VLCLibraryMusicSegment) {
-        [libraryWindow.libraryAudioViewController 
segmentedControlAction:libraryWindow.navigationStack];
+        [libraryWindow.libraryAudioViewController segmentedControlAction:self];
     }
 
-    // But we do want the "final" initial position to be added. So we manually 
invoke the navigation stack
-    [libraryWindow.navigationStack appendCurrentLibraryState];
-
     completionHandler(libraryWindow, nil);
 }
 


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
=====================================
@@ -26,7 +26,6 @@
 
 #import "library/VLCInputItem.h"
 #import "library/VLCLibraryWindow.h"
-#import "library/VLCLibraryNavigationStack.h"
 #import "library/VLCLibraryModel.h"
 #import "library/VLCLibraryController.h"
 #import "library/VLCLibraryDataTypes.h"


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
=====================================
@@ -363,11 +363,6 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = 
@"VLCLibraryPlaceholderAudi
 - (IBAction)segmentedControlAction:(id)sender
 {
     [self updatePresentedView];
-
-    VLCLibraryNavigationStack *globalNavStack = 
VLCMain.sharedInstance.libraryWindow.navigationStack;
-    if(sender != globalNavStack) {
-        [globalNavStack appendCurrentLibraryState];
-    }
 }
 
 - (void)reloadData


=====================================
modules/gui/macosx/library/media-source/VLCMediaSourceBaseDataSource.m
=====================================
@@ -377,6 +377,8 @@ referenceSizeForHeaderInSection:(NSInteger)section
         NSLog(@"Received bad node or media source, could not configure child 
data media source");
         return;
     }
+
+    [mediaSource preparseInputNodeWithinTree:node];
     
     VLCMediaSourceDataSource *newChildDataSource = [[VLCMediaSourceDataSource 
alloc] init];
     


=====================================
modules/gui/macosx/library/media-source/VLCMediaSourceDataSource.m
=====================================
@@ -50,9 +50,8 @@
 - (void)setNodeToDisplay:(nonnull VLCInputNode*)nodeToDisplay
 {
     NSAssert(nodeToDisplay, @"Nil node to display, will not set");
-    
     _nodeToDisplay = nodeToDisplay;
-    [self.displayedMediaSource preparseInputNodeWithinTree:_nodeToDisplay];
+    [self reloadData];
 }
 
 - (void)setupViews
@@ -202,8 +201,8 @@
 
     if (childRootInput.inputType == ITEM_TYPE_DIRECTORY || 
childRootInput.inputType == ITEM_TYPE_NODE) {
         self.pathControl.URL = [NSURL URLWithString:[self.pathControl.URL.path 
stringByAppendingPathComponent:[childRootInput.name 
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet 
URLPathAllowedCharacterSet]]]];
+        [self.displayedMediaSource preparseInputNodeWithinTree:node];
         self.nodeToDisplay = node;
-        [self reloadData];
         [[VLCMain sharedInstance].libraryWindow.navigationStack 
appendCurrentLibraryState];
     } else if (childRootInput.inputType == ITEM_TYPE_FILE && allowPlayback) {
         [[[VLCMain sharedInstance] playlistController] 
addInputItem:childRootInput.vlcInputItem atPosition:-1 startPlayback:YES];



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/0745da734f6e9f9afe7c1ebdbf3c0a2872d76bae...d99fb8edc1715aebbddaa1c5342c6a9eeb3e5700

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/0745da734f6e9f9afe7c1ebdbf3c0a2872d76bae...d99fb8edc1715aebbddaa1c5342c6a9eeb3e5700
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

Reply via email to