@@ -2539,6 +2539,7 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
2539
2539
private anchor : Trait < T > ;
2540
2540
private eventBufferer = new EventBufferer ( ) ;
2541
2541
private findController ?: FindController < T , TFilterData > ;
2542
+ private findFilter ?: FindFilter < T > ;
2542
2543
readonly onDidChangeFindOpenState : Event < boolean > = Event . None ;
2543
2544
onDidChangeStickyScrollFocused : Event < boolean > = Event . None ;
2544
2545
private focusNavigationFilter : ( ( node : ITreeNode < T , TFilterData > ) => boolean ) | undefined ;
@@ -2605,11 +2606,10 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
2605
2606
renderers : ITreeRenderer < T , TFilterData , any > [ ] ,
2606
2607
private _options : IAbstractTreeOptions < T , TFilterData > = { }
2607
2608
) {
2608
- let filter : FindFilter < T > | undefined ;
2609
2609
if ( _options . keyboardNavigationLabelProvider ) {
2610
- filter = new FindFilter ( this , _options . keyboardNavigationLabelProvider , _options . filter as any as ITreeFilter < T , FuzzyScore > ) ;
2611
- _options = { ..._options , filter : filter as ITreeFilter < T , TFilterData > } ; // TODO need typescript help here
2612
- this . disposables . add ( filter ) ;
2610
+ this . findFilter = new FindFilter ( this , _options . keyboardNavigationLabelProvider , _options . filter as any as ITreeFilter < T , FuzzyScore > ) ;
2611
+ _options = { ..._options , filter : this . findFilter as ITreeFilter < T , TFilterData > } ; // TODO need typescript help here
2612
+ this . disposables . add ( this . findFilter ) ;
2613
2613
}
2614
2614
2615
2615
this . model = this . createModel ( _user , _options ) ;
@@ -2646,7 +2646,7 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
2646
2646
defaultFindMode : _options . defaultFindMode ,
2647
2647
defaultFindMatchType : _options . defaultFindMatchType ,
2648
2648
} ;
2649
- this . findController = this . disposables . add ( new FindController ( this , filter ! , _options . contextViewProvider , findOptions ) ) ;
2649
+ this . findController = this . disposables . add ( new FindController ( this , this . findFilter ! , _options . contextViewProvider , findOptions ) ) ;
2650
2650
this . focusNavigationFilter = node => this . findController ! . shouldAllowFocus ( node ) ;
2651
2651
this . onDidChangeFindOpenState = this . findController . onDidChangeOpenState ;
2652
2652
this . onDidChangeFindMode = this . findController . onDidChangeMode ;
@@ -3162,6 +3162,10 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
3162
3162
3163
3163
protected abstract createModel ( user : string , options : IAbstractTreeOptions < T , TFilterData > ) : ITreeModel < T , TFilterData , TRef > ;
3164
3164
3165
+ createNewModel ( options : IAbstractTreeOptions < T , TFilterData > = { } ) : ITreeModel < T , TFilterData , TRef > {
3166
+ return this . createModel ( this . _user , { ...this . _options , filter : this . findFilter as ITreeFilter < T , TFilterData > | undefined , ...options } ) ;
3167
+ }
3168
+
3165
3169
private readonly modelDisposables = new DisposableStore ( ) ;
3166
3170
private setupModel ( model : ITreeModel < T , TFilterData , TRef > ) {
3167
3171
this . modelDisposables . clear ( ) ;
0 commit comments