From 2f4ba073a396d1bacf0402790d0002c2a3d534f6 Mon Sep 17 00:00:00 2001
From: Claudio Cambra <claudio.cambra@gmail.com>
Date: Sun, 4 Sep 2022 20:20:43 +0200
Subject: [PATCH] macosx: Fix bugs with library window restoration and setting
 of navigation stack state

Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
---
 modules/gui/macosx/library/VLCLibraryAudioDataSource.m | 2 +-
 modules/gui/macosx/library/VLCLibraryNavigationState.m | 2 +-
 modules/gui/macosx/library/VLCLibraryWindow.m          | 6 +++++-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/modules/gui/macosx/library/VLCLibraryAudioDataSource.m b/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
index 36849b5d5c6c..cce2e707e676 100644
--- a/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
+++ b/modules/gui/macosx/library/VLCLibraryAudioDataSource.m
@@ -200,7 +200,7 @@
 {
     [self.segmentedControl setTarget:self];
     [self.segmentedControl setAction:@selector(segmentedControlAction:)];
-    [self segmentedControlAction:self];
+    [self segmentedControlAction:[[[VLCMain sharedInstance] libraryWindow] navigationStack]];
 }
 
 - (void)reloadEmptyViewAppearance
diff --git a/modules/gui/macosx/library/VLCLibraryNavigationState.m b/modules/gui/macosx/library/VLCLibraryNavigationState.m
index fad5498ec012..f0d71637cb1f 100644
--- a/modules/gui/macosx/library/VLCLibraryNavigationState.m
+++ b/modules/gui/macosx/library/VLCLibraryNavigationState.m
@@ -39,4 +39,4 @@
     return navState;
 }
 
-@end
\ No newline at end of file
+@end
diff --git a/modules/gui/macosx/library/VLCLibraryWindow.m b/modules/gui/macosx/library/VLCLibraryWindow.m
index 84f97b16d17f..b254d57f1e1d 100644
--- a/modules/gui/macosx/library/VLCLibraryWindow.m
+++ b/modules/gui/macosx/library/VLCLibraryWindow.m
@@ -995,8 +995,12 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
     [libraryWindow.gridVsListSegmentedControl setSelectedSegment:rememberedSelectedLibraryViewModeSegment];
     [libraryWindow.libraryAudioDataSource.segmentedControl setSelectedSegment:rememberedSelectedLibraryViewAudioSegment];
 
-    [libraryWindow segmentedControlAction:libraryWindow.navigationStack]; // Prevent actions being added to the nav stack
+    // We don't want to add these to the navigation stack...
     [libraryWindow.libraryAudioDataSource segmentedControlAction:libraryWindow.navigationStack];
+    [libraryWindow segmentedControlAction:libraryWindow.navigationStack];
+
+    // But we do want the "final" initial position to be added. So we manually invoke the navigation stack
+    [libraryWindow.navigationStack appendCurrentLibraryState];
 
     completionHandler(libraryWindow, nil);
 }
-- 
GitLab