[vlc-commits] macosx: Fix expanding and highlighting of currently playing item

David Fuhrmann git at videolan.org
Sat Jun 17 13:58:28 CEST 2017


vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Sat Jun 17 13:01:02 2017 +0200| [b1a99e0b7fa017fbff235a3d0272a5caee7618b3] | committer: David Fuhrmann

macosx: Fix expanding and highlighting of currently playing item

Correctly expand and scroll to currently playing item. Update
table view, to remove highlight of previously played item.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b1a99e0b7fa017fbff235a3d0272a5caee7618b3
---

 modules/gui/macosx/VLCPlaylist.m | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/modules/gui/macosx/VLCPlaylist.m b/modules/gui/macosx/VLCPlaylist.m
index 25d66b07ed..828d715589 100644
--- a/modules/gui/macosx/VLCPlaylist.m
+++ b/modules/gui/macosx/VLCPlaylist.m
@@ -258,27 +258,33 @@
     if (!item)
         return;
 
-    // select item
+    // Search for item row for selection
     NSInteger itemIndex = [_outlineView rowForItem:item];
     if (itemIndex < 0) {
-        // expand if needed
-        while (item != nil) {
-            VLCPLItem *parent = [item parent];
-
-            if (![_outlineView isExpandable: parent])
-                break;
-            if (![_outlineView isItemExpanded: parent])
-                [_outlineView expandItem: parent];
-            item = parent;
+        // Expand if needed. This must be done from root to child
+        // item in order to work
+        NSMutableArray *itemsToExpand = [NSMutableArray array];
+        VLCPLItem *tmpItem = [item parent];
+        while (tmpItem != nil) {
+            [itemsToExpand addObject:tmpItem];
+            tmpItem = [tmpItem parent];
         }
 
-        // search for row again
-        itemIndex = [_outlineView rowForItem:item];
-        if (itemIndex < 0) {
-            return;
+        for(int i = itemsToExpand.count - 1; i >= 0; i--) {
+            VLCPLItem *currentItem = [itemsToExpand objectAtIndex:i];
+            [_outlineView expandItem: currentItem];
         }
     }
 
+    // Update highlight for currently playing item
+    [_outlineView reloadData];
+
+    // Search for row again
+    itemIndex = [_outlineView rowForItem:item];
+    if (itemIndex < 0) {
+        return;
+    }
+
     [_outlineView selectRowIndexes: [NSIndexSet indexSetWithIndex: itemIndex] byExtendingSelection: NO];
     [_outlineView scrollRowToVisible: itemIndex];
 }



More information about the vlc-commits mailing list