From 7cf5fbe82cc18155433046cde85e01cf218e17cd Mon Sep 17 00:00:00 2001 From: Marian Durkovic Date: Wed, 29 Nov 2006 10:02:42 +0000 Subject: [PATCH] Forwardport [18136]: Fixed RecursiveDeleteSelection() to prevent destroying the whole playlist --- modules/gui/wxwidgets/dialogs/playlist.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/gui/wxwidgets/dialogs/playlist.cpp b/modules/gui/wxwidgets/dialogs/playlist.cpp index 0e80283931..80164094a3 100644 --- a/modules/gui/wxwidgets/dialogs/playlist.cpp +++ b/modules/gui/wxwidgets/dialogs/playlist.cpp @@ -1059,16 +1059,23 @@ void Playlist::RecursiveDeleteSelection( wxTreeItemId root ) { wxTreeItemIdValue cookie; wxTreeItemId child = treectrl->GetFirstChild( root, cookie ); + wxTreeItemId nextchild; + bool childIsSelected = FALSE; + bool nextchildIsSelected = FALSE; + + if( child.IsOk() ) childIsSelected = treectrl->IsSelected( child ); + while( child.IsOk() ) { - if( treectrl->ItemHasChildren( child ) ) - { - RecursiveDeleteSelection( child ); - if( treectrl->IsSelected(child ) ) DeleteTreeItem( child ); - } - else if( treectrl->IsSelected( child ) ) + nextchild = treectrl->GetNextChild( root, cookie ); + if( nextchild.IsOk() ) + nextchildIsSelected = treectrl->IsSelected( nextchild ); + if( childIsSelected ) DeleteTreeItem( child ); - child = treectrl->GetNextChild( root, cookie ); + else if( treectrl->ItemHasChildren( child ) ) + RecursiveDeleteSelection( child ); + child = nextchild; + childIsSelected = nextchildIsSelected; } } -- 2.39.2