Commit 18e545d8 authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: implemented the sidebar completely to support switching between the...

macosx: implemented the sidebar completely to support switching between the playlist's top-level nodes (fixes #4944)
(cherry picked from commit 59a02878)
parent d814ffb8
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#import "MainMenu.h" #import "MainMenu.h"
#import "open.h" #import "open.h"
#import "controls.h" // TODO: remove me #import "controls.h" // TODO: remove me
#import "playlist.h"
#import "SideBarItem.h" #import "SideBarItem.h"
#import <vlc_playlist.h> #import <vlc_playlist.h>
#import <vlc_aout_intf.h> #import <vlc_aout_intf.h>
...@@ -307,6 +308,8 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -307,6 +308,8 @@ static VLCMainWindow *_o_sharedInstance = nil;
SideBarItem *libraryItem = [SideBarItem itemWithTitle:_NS("LIBRARY") identifier:@"library"]; SideBarItem *libraryItem = [SideBarItem itemWithTitle:_NS("LIBRARY") identifier:@"library"];
SideBarItem *playlistItem = [SideBarItem itemWithTitle:_NS("Playlist") identifier:@"playlist"]; SideBarItem *playlistItem = [SideBarItem itemWithTitle:_NS("Playlist") identifier:@"playlist"];
[playlistItem setIcon: [NSImage imageNamed:@"sidebar-playlist"]]; [playlistItem setIcon: [NSImage imageNamed:@"sidebar-playlist"]];
SideBarItem *medialibraryItem = [SideBarItem itemWithTitle:_NS("Media Library") identifier:@"medialibrary"];
[medialibraryItem setIcon: [NSImage imageNamed:@"sidebar-playlist"]];
SideBarItem *mycompItem = [SideBarItem itemWithTitle:_NS("MY COMPUTER") identifier:@"mycomputer"]; SideBarItem *mycompItem = [SideBarItem itemWithTitle:_NS("MY COMPUTER") identifier:@"mycomputer"];
SideBarItem *devicesItem = [SideBarItem itemWithTitle:_NS("DEVICES") identifier:@"devices"]; SideBarItem *devicesItem = [SideBarItem itemWithTitle:_NS("DEVICES") identifier:@"devices"];
SideBarItem *lanItem = [SideBarItem itemWithTitle:_NS("LOCAL NETWORK") identifier:@"localnetwork"]; SideBarItem *lanItem = [SideBarItem itemWithTitle:_NS("LOCAL NETWORK") identifier:@"localnetwork"];
...@@ -333,10 +336,12 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -333,10 +336,12 @@ static VLCMainWindow *_o_sharedInstance = nil;
{ {
[internetItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]]; [internetItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]];
if (!strncmp( *ppsz_name, "podcast", 7 )) if (!strncmp( *ppsz_name, "podcast", 7 ))
[[internetItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-podcast"]]; [internetItems removeLastObject]; // we don't support podcasts at this point (see #6017)
// [[internetItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-podcast"]];
else else
[[internetItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]]; [[internetItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]];
[[internetItems lastObject] setSdtype: SD_CAT_INTERNET]; [[internetItems lastObject] setSdtype: SD_CAT_INTERNET];
[[internetItems lastObject] setUntranslatedTitle: [NSString stringWithUTF8String: *ppsz_longname]];
} }
break; break;
case SD_CAT_DEVICES: case SD_CAT_DEVICES:
...@@ -344,6 +349,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -344,6 +349,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
[devicesItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]]; [devicesItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]];
[[devicesItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]]; [[devicesItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]];
[[devicesItems lastObject] setSdtype: SD_CAT_DEVICES]; [[devicesItems lastObject] setSdtype: SD_CAT_DEVICES];
[[devicesItems lastObject] setUntranslatedTitle: [NSString stringWithUTF8String: *ppsz_longname]];
} }
break; break;
case SD_CAT_LAN: case SD_CAT_LAN:
...@@ -351,6 +357,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -351,6 +357,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
[lanItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]]; [lanItems addObject: [SideBarItem itemWithTitle: _NS(*ppsz_longname) identifier: o_identifier]];
[[lanItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-local"]]; [[lanItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-local"]];
[[lanItems lastObject] setSdtype: SD_CAT_LAN]; [[lanItems lastObject] setSdtype: SD_CAT_LAN];
[[lanItems lastObject] setUntranslatedTitle: [NSString stringWithUTF8String: *ppsz_longname]];
} }
break; break;
case SD_CAT_MYCOMPUTER: case SD_CAT_MYCOMPUTER:
...@@ -364,6 +371,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -364,6 +371,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
[[mycompItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-pictures"]]; [[mycompItems lastObject] setIcon: [NSImage imageNamed:@"sidebar-pictures"]];
else else
[[mycompItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]]; [[mycompItems lastObject] setIcon: [NSImage imageNamed:@"NSApplicationIcon"]];
[[mycompItems lastObject] setUntranslatedTitle: [NSString stringWithUTF8String: *ppsz_longname]];
[[mycompItems lastObject] setSdtype: SD_CAT_MYCOMPUTER]; [[mycompItems lastObject] setSdtype: SD_CAT_MYCOMPUTER];
} }
break; break;
...@@ -387,7 +395,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -387,7 +395,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
free( ppsz_longnames ); free( ppsz_longnames );
free( p_categories ); free( p_categories );
[libraryItem setChildren: [NSArray arrayWithObject: playlistItem]]; [libraryItem setChildren: [NSArray arrayWithObjects: playlistItem, medialibraryItem, nil]];
[o_sidebaritems addObject: libraryItem]; [o_sidebaritems addObject: libraryItem];
if ([mycompItem hasChildren]) if ([mycompItem hasChildren])
[o_sidebaritems addObject: mycompItem]; [o_sidebaritems addObject: mycompItem];
...@@ -399,10 +407,10 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -399,10 +407,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
[o_sidebaritems addObject: internetItem]; [o_sidebaritems addObject: internetItem];
[o_sidebar_view reloadData]; [o_sidebar_view reloadData];
[o_sidebar_view selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:YES];
NSUInteger i_sidebaritem_count = [o_sidebaritems count]; NSUInteger i_sidebaritem_count = [o_sidebaritems count];
for (NSUInteger x = 0; x < i_sidebaritem_count; x++) for (NSUInteger x = 0; x < i_sidebaritem_count; x++)
[o_sidebar_view expandItem: [o_sidebaritems objectAtIndex: x] expandChildren: YES]; [o_sidebar_view expandItem: [o_sidebaritems objectAtIndex: x] expandChildren: YES];
[o_sidebar_view selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO];
if( b_dark_interface ) if( b_dark_interface )
{ {
...@@ -1104,7 +1112,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -1104,7 +1112,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
[o_fspanel setSeekable: b_seekable]; [o_fspanel setSeekable: b_seekable];
PL_LOCK; PL_LOCK;
if (p_playlist->items.i_size >= 1) if ([[[VLCMain sharedInstance] playlist] currentPlaylistRoot] != p_playlist->p_local_category || p_playlist->p_local_category->i_children > 0)
[self hideDropZone]; [self hideDropZone];
else else
[self showDropZone]; [self showDropZone];
...@@ -1897,7 +1905,7 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -1897,7 +1905,7 @@ static VLCMainWindow *_o_sharedInstance = nil;
- (BOOL)sourceList:(PXSourceList*)aSourceList itemHasBadge:(id)item - (BOOL)sourceList:(PXSourceList*)aSourceList itemHasBadge:(id)item
{ {
if ([[item identifier] isEqualToString: @"playlist"]) if ([[item identifier] isEqualToString: @"playlist"] || [[item identifier] isEqualToString: @"medialibrary"])
return YES; return YES;
return [item hasBadge]; return [item hasBadge];
...@@ -1906,12 +1914,21 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -1906,12 +1914,21 @@ static VLCMainWindow *_o_sharedInstance = nil;
- (NSInteger)sourceList:(PXSourceList*)aSourceList badgeValueForItem:(id)item - (NSInteger)sourceList:(PXSourceList*)aSourceList badgeValueForItem:(id)item
{ {
if ([[item identifier] isEqualToString: @"playlist"]) {
playlist_t * p_playlist = pl_Get( VLCIntf ); playlist_t * p_playlist = pl_Get( VLCIntf );
NSInteger i_playlist_size; NSInteger i_playlist_size;
if ([[item identifier] isEqualToString: @"playlist"])
{
PL_LOCK;
i_playlist_size = p_playlist->p_local_category->i_children;
PL_UNLOCK;
return i_playlist_size;
}
if ([[item identifier] isEqualToString: @"medialibrary"])
{
PL_LOCK; PL_LOCK;
i_playlist_size = p_playlist->items.i_size; i_playlist_size = p_playlist->p_ml_category->i_children;
PL_UNLOCK; PL_UNLOCK;
return i_playlist_size; return i_playlist_size;
...@@ -1979,14 +1996,13 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -1979,14 +1996,13 @@ static VLCMainWindow *_o_sharedInstance = nil;
- (void)sourceListSelectionDidChange:(NSNotification *)notification - (void)sourceListSelectionDidChange:(NSNotification *)notification
{ {
playlist_t * p_playlist = pl_Get( VLCIntf );
NSIndexSet *selectedIndexes = [o_sidebar_view selectedRowIndexes]; NSIndexSet *selectedIndexes = [o_sidebar_view selectedRowIndexes];
id item = [o_sidebar_view itemAtRow:[selectedIndexes firstIndex]];
//Set the label text to represent the new selection //Set the label text to represent the new selection
if([selectedIndexes count]==1) {
id item = [o_sidebar_view itemAtRow:[selectedIndexes firstIndex]];
if ([item sdtype] > -1) if ([item sdtype] > -1)
{ {
playlist_t * p_playlist = pl_Get( VLCIntf );
BOOL sd_loaded = playlist_IsServicesDiscoveryLoaded( p_playlist, [[item identifier] UTF8String] ); BOOL sd_loaded = playlist_IsServicesDiscoveryLoaded( p_playlist, [[item identifier] UTF8String] );
if (!sd_loaded) if (!sd_loaded)
{ {
...@@ -1995,10 +2011,30 @@ static VLCMainWindow *_o_sharedInstance = nil; ...@@ -1995,10 +2011,30 @@ static VLCMainWindow *_o_sharedInstance = nil;
} }
[o_chosen_category_lbl setStringValue:[item title]]; [o_chosen_category_lbl setStringValue:[item title]];
if ([[item identifier] isEqualToString:@"playlist"])
{
[[[VLCMain sharedInstance] playlist] setPlaylistRoot:p_playlist->p_local_category];
} }
else { else if([[item identifier] isEqualToString:@"medialibrary"])
[o_chosen_category_lbl setStringValue:@"(none)"]; {
[[[VLCMain sharedInstance] playlist] setPlaylistRoot:p_playlist->p_ml_category];
}
else
{
playlist_item_t * pl_item;
PL_LOCK;
pl_item = playlist_ChildSearchName( p_playlist->p_root, [[item untranslatedTitle] UTF8String] );
PL_UNLOCK;
[[[VLCMain sharedInstance] playlist] setPlaylistRoot: pl_item];
} }
PL_LOCK;
if ([[[VLCMain sharedInstance] playlist] currentPlaylistRoot] != p_playlist->p_local_category || p_playlist->p_local_category->i_children > 0)
[self hideDropZone];
else
[self showDropZone];
PL_UNLOCK;
} }
@end @end
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
@interface SideBarItem : NSObject { @interface SideBarItem : NSObject {
NSString *title; NSString *title;
NSString *identifier; NSString *identifier;
NSString *untranslatedTitle;
NSImage *icon; NSImage *icon;
NSInteger badgeValue; NSInteger badgeValue;
NSInteger sdtype; NSInteger sdtype;
...@@ -39,6 +40,7 @@ ...@@ -39,6 +40,7 @@
@property (nonatomic, copy) NSString *title; @property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *identifier; @property (nonatomic, copy) NSString *identifier;
@property (nonatomic, copy) NSString *untranslatedTitle;
@property (nonatomic, retain) NSImage *icon; @property (nonatomic, retain) NSImage *icon;
@property NSInteger badgeValue; @property NSInteger badgeValue;
@property NSInteger sdtype; @property NSInteger sdtype;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
@implementation SideBarItem @implementation SideBarItem
@synthesize title; @synthesize title;
@synthesize untranslatedTitle;
@synthesize identifier; @synthesize identifier;
@synthesize icon; @synthesize icon;
@synthesize badgeValue; @synthesize badgeValue;
......
...@@ -705,7 +705,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -705,7 +705,7 @@ static VLCMain *_o_sharedMainInstance = nil;
if (notification == nil) if (notification == nil)
[[NSNotificationCenter defaultCenter] postNotificationName: NSApplicationWillTerminateNotification object: nil]; [[NSNotificationCenter defaultCenter] postNotificationName: NSApplicationWillTerminateNotification object: nil];
playlist_t * p_playlist = pl_Get( p_intf );; playlist_t * p_playlist = pl_Get( p_intf );
int returnedValue = 0; int returnedValue = 0;
/* Save some interface state in configuration, at module quit */ /* Save some interface state in configuration, at module quit */
......
/***************************************************************************** /*****************************************************************************
* playlist.h: MacOS X interface module * playlist.h: MacOS X interface module
***************************************************************************** *****************************************************************************
* Copyright (C) 2002-2006 VLC authors and VideoLAN * Copyright (C) 2002-2012 VLC authors and VideoLAN
* $Id$ * $Id$
* *
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net> * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Derk-Jan Hartman <hartman at videolan dot org> * Derk-Jan Hartman <hartman at videolan dot org>
* Felix Paul Kühne <fkuehne at videolan dot org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -49,8 +50,11 @@ ...@@ -49,8 +50,11 @@
IBOutlet VLCPlaylistView* o_outline_view_other; IBOutlet VLCPlaylistView* o_outline_view_other;
NSMutableDictionary *o_outline_dict; NSMutableDictionary *o_outline_dict;
playlist_item_t * p_current_root_item;
} }
- (void)setPlaylistRoot: (playlist_item_t *)root_item;
- (playlist_item_t *)currentPlaylistRoot;
- (void)initStrings; - (void)initStrings;
- (playlist_item_t *)selectedPlaylistItem; - (playlist_item_t *)selectedPlaylistItem;
- (NSOutlineView *)outlineView; - (NSOutlineView *)outlineView;
......
/***************************************************************************** /*****************************************************************************
* playlist.m: MacOS X interface module * playlist.m: MacOS X interface module
***************************************************************************** *****************************************************************************
* Copyright (C) 2002-2009 VLC authors and VideoLAN * Copyright (C) 2002-2012 VLC authors and VideoLAN
* $Id$ * $Id$
* *
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net> * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Derk-Jan Hartman <hartman at videola/n dot org> * Derk-Jan Hartman <hartman at videola/n dot org>
* Benjamin Pracht <bigben at videolab dot org> * Benjamin Pracht <bigben at videolab dot org>
* Felix Paul Kühne <fkuehne at videolan dot org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -107,6 +108,9 @@ ...@@ -107,6 +108,9 @@
- (id)init - (id)init
{ {
playlist_t * p_playlist = pl_Get( VLCIntf );
p_current_root_item = p_playlist->p_local_category;
self = [super init]; self = [super init];
if ( self != nil ) if ( self != nil )
{ {
...@@ -114,6 +118,7 @@ ...@@ -114,6 +118,7 @@
} }
return self; return self;
} }
- (void)awakeFromNib - (void)awakeFromNib
{ {
playlist_t * p_playlist = pl_Get( VLCIntf ); playlist_t * p_playlist = pl_Get( VLCIntf );
...@@ -142,6 +147,18 @@ ...@@ -142,6 +147,18 @@
[[o_tc_duration_other headerCell] setStringValue:_NS("Duration")]; [[o_tc_duration_other headerCell] setStringValue:_NS("Duration")];
} }
- (void)setPlaylistRoot: (playlist_item_t *)root_item
{
p_current_root_item = root_item;
[o_outline_view reloadData];
[o_outline_view_other reloadData];
}
- (playlist_item_t *)currentPlaylistRoot
{
return p_current_root_item;
}
- (void)swapPlaylists:(id)newList - (void)swapPlaylists:(id)newList
{ {
if(newList != o_outline_view) if(newList != o_outline_view)
...@@ -175,7 +192,6 @@ ...@@ -175,7 +192,6 @@
@end @end
@implementation VLCPlaylistCommon (NSOutlineViewDataSource) @implementation VLCPlaylistCommon (NSOutlineViewDataSource)
/* return the number of children for Obj-C pointer item */ /* DONE */ /* return the number of children for Obj-C pointer item */ /* DONE */
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item - (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
{ {
...@@ -186,7 +202,9 @@ ...@@ -186,7 +202,9 @@
PL_LOCK; PL_LOCK;
if( !item ) if( !item )
p_item = p_playlist->p_root_category; {
p_item = p_current_root_item;
}
else else
p_item = (playlist_item_t *)[item pointerValue]; p_item = (playlist_item_t *)[item pointerValue];
...@@ -208,7 +226,7 @@ ...@@ -208,7 +226,7 @@
if( item == nil ) if( item == nil )
{ {
/* root object */ /* root object */
p_item = p_playlist->p_root_category; p_item = p_current_root_item;
} }
else else
{ {
...@@ -240,9 +258,9 @@ ...@@ -240,9 +258,9 @@
if( item == nil ) if( item == nil )
{ {
/* root object */ /* root object */
if( p_playlist->p_root_category ) if( p_current_root_item )
{ {
i_return = p_playlist->p_root_category->i_children; i_return = p_current_root_item->i_children;
} }
} }
else else
...@@ -415,7 +433,7 @@ ...@@ -415,7 +433,7 @@
o_descendingSortingImage = [[NSOutlineView class] _defaultTableHeaderReverseSortImage]; o_descendingSortingImage = [[NSOutlineView class] _defaultTableHeaderReverseSortImage];
o_tc_sortColumn = nil; o_tc_sortColumn = nil;
#if 0
char ** ppsz_name; char ** ppsz_name;
char ** ppsz_services = vlc_sd_GetNames( VLCIntf, &ppsz_name, NULL ); char ** ppsz_services = vlc_sd_GetNames( VLCIntf, &ppsz_name, NULL );
if( !ppsz_services ) if( !ppsz_services )
...@@ -453,6 +471,7 @@ ...@@ -453,6 +471,7 @@
} }
free( ppsz_services ); free( ppsz_services );
free( ppsz_name ); free( ppsz_name );
#endif
} }
- (void)searchfieldChanged:(NSNotification *)o_notification - (void)searchfieldChanged:(NSNotification *)o_notification
...@@ -974,7 +993,7 @@ ...@@ -974,7 +993,7 @@
else else
/*If no item is selected, sort the whole playlist*/ /*If no item is selected, sort the whole playlist*/
{ {
p_item = p_playlist->p_root_category; p_item = [self currentPlaylistRoot];
} }
PL_LOCK; PL_LOCK;
...@@ -1079,6 +1098,11 @@ ...@@ -1079,6 +1098,11 @@
{ {
playlist_t * p_playlist = pl_Get( VLCIntf ); playlist_t * p_playlist = pl_Get( VLCIntf );
NSUInteger count = [o_array count]; NSUInteger count = [o_array count];
BOOL b_usingPlaylist;
if ([self currentPlaylistRoot] == p_playlist->p_ml_category)
b_usingPlaylist = NO;
else
b_usingPlaylist = YES;
PL_LOCK; PL_LOCK;
for( NSUInteger i_item = 0; i_item < count; i_item++ ) for( NSUInteger i_item = 0; i_item < count; i_item++ )
...@@ -1097,7 +1121,7 @@ ...@@ -1097,7 +1121,7 @@
/* Add the item */ /* Add the item */
/* FIXME: playlist_AddInput() can fail */ /* FIXME: playlist_AddInput() can fail */
playlist_AddInput( p_playlist, p_input, PLAYLIST_INSERT, i_position == -1 ? PLAYLIST_END : i_position + i_item, true, playlist_AddInput( p_playlist, p_input, PLAYLIST_INSERT, i_position == -1 ? PLAYLIST_END : i_position + i_item, b_usingPlaylist,
pl_Locked ); pl_Locked );
vlc_gc_decref( p_input ); vlc_gc_decref( p_input );
...@@ -1224,11 +1248,11 @@ ...@@ -1224,11 +1248,11 @@
/*First, only search after the selected item:* /*First, only search after the selected item:*
*(b_selected_item_met = NO) */ *(b_selected_item_met = NO) */
o_result = [self subSearchItem:p_playlist->p_root_category]; o_result = [self subSearchItem:[self currentPlaylistRoot]];
if( o_result == NULL ) if( o_result == NULL )
{ {
/* If the first search failed, search again from the beginning */ /* If the first search failed, search again from the beginning */
o_result = [self subSearchItem:p_playlist->p_root_category]; o_result = [self subSearchItem:[self currentPlaylistRoot]];
} }
if( o_result != NULL ) if( o_result != NULL )
{ {
...@@ -1344,7 +1368,7 @@ ...@@ -1344,7 +1368,7 @@
} }
PL_LOCK; PL_LOCK;
playlist_RecursiveNodeSort( p_playlist, p_playlist->p_root_category, i_mode, i_type ); playlist_RecursiveNodeSort( p_playlist, [self currentPlaylistRoot], i_mode, i_type );
PL_UNLOCK; PL_UNLOCK;
[self playlistUpdated]; [self playlistUpdated];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment