From: Erwan Tulou Date: Tue, 10 Aug 2010 16:19:15 +0000 (+0200) Subject: skins2: playlist make sure deletion works for both nodes and leaves X-Git-Tag: 1.2.0-pre1~5476 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e866693d12668857fe05564e64c7b73b1240e38b;p=vlc skins2: playlist make sure deletion works for both nodes and leaves --- diff --git a/modules/gui/skins2/vars/playtree.cpp b/modules/gui/skins2/vars/playtree.cpp index 43cba38ce6..c8dfb9132c 100644 --- a/modules/gui/skins2/vars/playtree.cpp +++ b/modules/gui/skins2/vars/playtree.cpp @@ -51,12 +51,11 @@ void Playtree::delSelected() { Iterator it = begin(); playlist_Lock( getIntf()->p_sys->p_playlist ); - for( it = begin(); it != end(); it = getNextVisibleItem( it ) ) + for( it = begin(); it != end(); it = getNextItem( it ) ) { - if( (*it).m_selected && !(*it).isReadonly() ) + if( it->m_selected && !it->isReadonly() ) { - (*it).m_deleted = true; - (*it).m_expanded = false; + it->cascadeDelete(); } } /// \todo Do this better (handle item-deleted) @@ -66,7 +65,7 @@ void Playtree::delSelected() it = begin(); while( it != end() ) { - if( (*it).m_deleted ) + if( it->m_deleted ) { VarTree::Iterator it2; playlist_item_t *p_item = (playlist_item_t *)(it->m_pData); @@ -74,13 +73,14 @@ void Playtree::delSelected() { playlist_DeleteFromInput( getIntf()->p_sys->p_playlist, p_item->p_input, pl_Locked ); + it2 = getNextItem( it ) ; } else { playlist_NodeDelete( getIntf()->p_sys->p_playlist, p_item, true, false ); + it2 = it->getNextSiblingOrUncle(); } - it2 = getNextItem( it ) ; it->parent()->removeChild( it ); it = it2; }