From ab50cb365c79ce497fb7d58b8968c0501986c1d1 Mon Sep 17 00:00:00 2001
From: Claudio Cambra <developer@claudiocambra.com>
Date: Tue, 25 Mar 2025 15:26:22 +0100
Subject: [PATCH 1/3] macosx: Also scroll to visibile when using audio data
 source select indices

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
---
 .../macosx/library/audio-library/VLCLibraryAudioDataSource.m   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m b/modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
index aef76be15dbe..4eb02f3b213e 100644
--- a/modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
+++ b/modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
@@ -701,11 +701,12 @@ NSString * const VLCLibraryAudioDataSourceDisplayedCollectionChangedNotification
         return;
     }
 
+    const NSInteger selectedRow = indices.firstIndex;
     if (tableView.selectedRowIndexes != indices) {
         [tableView selectRowIndexes:indices byExtendingSelection:NO];
+        [tableView scrollRowToVisible:selectedRow];
     }
 
-    const NSInteger selectedRow = indices.firstIndex;
     if (selectedRow >= self.displayedCollection.count) {
         return;
     }
-- 
GitLab


From 097e5cc0530e3f27762d5994b89ee43930d0bd54 Mon Sep 17 00:00:00 2001
From: Claudio Cambra <developer@claudiocambra.com>
Date: Tue, 25 Mar 2025 15:27:26 +0100
Subject: [PATCH 2/3] macosx: Use audio data source selection method in audio
 view controller for table view

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
---
 .../library/audio-library/VLCLibraryAudioViewController.m      | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m b/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
index 3c2e17cef102..72a95ffe0928 100644
--- a/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
+++ b/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
@@ -429,8 +429,7 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudi
     const NSInteger rowForLibraryItem = [self.audioDataSource rowForLibraryItem:libraryItem];
     if (rowForLibraryItem != NSNotFound) {
         NSIndexSet * const indexSet = [NSIndexSet indexSetWithIndex:rowForLibraryItem];
-        [targetMainTableView selectRowIndexes:indexSet byExtendingSelection:NO];
-        [targetMainTableView scrollRowToVisible:rowForLibraryItem];
+        [self.audioDataSource tableView:targetMainTableView selectRowIndices:indexSet];
     }
 }
 
-- 
GitLab


From 34ed2bd42cb693ce8d34548fa92e05817c2549ca Mon Sep 17 00:00:00 2001
From: Claudio Cambra <developer@claudiocambra.com>
Date: Wed, 26 Mar 2025 15:42:05 +0100
Subject: [PATCH 3/3] macosx: Fix presenting item in current audio library
 segment

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
---
 .../audio-library/VLCLibraryAudioViewController.m        | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m b/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
index 72a95ffe0928..fbf481d6ab43 100644
--- a/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
+++ b/modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
@@ -459,7 +459,7 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudi
     }
 }
 
-- (void)presentLibraryItemWaitForDataSourceFinished:(NSNotification *)aNotification
+- (void)presentLibraryItemWaitForDataSourceFinished:(nullable NSNotification *)aNotification
 {
     if (self.audioDataSource.displayedCollectionCount < self.audioDataSource.collectionToDisplayCount) {
         return;
@@ -502,12 +502,17 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = @"VLCLibraryPlaceholderAudi
         segmentType = VLCLibrarySongsMusicSubSegmentType;
     }
 
+    VLCLibraryWindow * const libraryWindow = self.libraryWindow;
+    if (segmentType == libraryWindow.librarySegmentType) {
+        [self presentLibraryItemWaitForDataSourceFinished:nil];
+        return;
+    }
+
     [NSNotificationCenter.defaultCenter addObserver:self
                                            selector:@selector(presentLibraryItemWaitForDataSourceFinished:)
                                                name:VLCLibraryAudioDataSourceDisplayedCollectionChangedNotification
                                              object:self.audioDataSource];
 
-    VLCLibraryWindow * const libraryWindow = self.libraryWindow;
     libraryWindow.librarySegmentType = segmentType;
     [libraryWindow.splitViewController.navSidebarViewController selectSegment:segmentType];
 }
-- 
GitLab