@@ -478,19 +478,20 @@ public void SaveState()
478
478
if ( state == null ) state = new DataTreeState ( ) ;
479
479
state . Selected = _tree . SelectedNode == null ? null : _model . GetFullPath ( _tree . SelectedNode . Tag as Node ) ;
480
480
state . Expanded . Clear ( ) ;
481
- SaveExpanded ( Nodes ) ;
481
+ if ( Nodes != null && Nodes . Count > 0 )
482
+ SaveExpanded ( Nodes ) ;
482
483
SaveScrollState ( ) ;
483
484
}
484
485
485
486
private void SaveExpanded ( Collection < Node > nodes )
486
487
{
487
- if ( nodes == null ) return ;
488
488
foreach ( Node node in nodes )
489
489
{
490
- if ( Tree . FindNode ( _model . GetPath ( node ) ) . IsExpanded )
490
+ if ( ! node . IsLeaf && Tree . FindNode ( _model . GetPath ( node ) ) . IsExpanded )
491
491
{
492
492
state . Expanded . Add ( _model . GetFullPath ( node ) ) ;
493
- SaveExpanded ( node . Nodes ) ;
493
+ if ( node . Nodes . Count > 0 )
494
+ SaveExpanded ( node . Nodes ) ;
494
495
}
495
496
}
496
497
}
@@ -511,21 +512,22 @@ private void SaveScrollState()
511
512
public void RestoreState ( )
512
513
{
513
514
if ( state == null ) return ;
514
- RestoreExpanded ( Nodes ) ;
515
+ if ( state . Expanded != null && state . Expanded . Count > 0 )
516
+ RestoreExpanded ( Nodes ) ;
515
517
if ( state . Selected != null )
516
518
_tree . SelectedNode = _tree . FindNodeByTag ( _model . FindNode ( state . Selected ) ) ;
517
519
RestoreScrollState ( ) ;
518
520
}
519
521
520
522
private void RestoreExpanded ( Collection < Node > nodes )
521
523
{
522
- if ( nodes == null ) return ;
523
524
foreach ( Node node in nodes )
524
525
{
525
526
if ( ! node . IsLeaf && state . Expanded . Contains ( _model . GetFullPath ( node ) ) )
526
527
{
527
528
Tree . FindNode ( _model . GetPath ( node ) ) . Expand ( ) ;
528
- RestoreExpanded ( node . Nodes ) ;
529
+ if ( node . Nodes . Count > 0 )
530
+ RestoreExpanded ( node . Nodes ) ;
529
531
}
530
532
}
531
533
}
0 commit comments