@@ -83,17 +83,18 @@ public bool EnableFirstParentInHistories
8383 }
8484 }
8585
86- public string SearchBranchFilter
86+ public string Filter
8787 {
88- get => _searchBranchFilter ;
88+ get => _filter ;
8989 set
9090 {
91- if ( SetProperty ( ref _searchBranchFilter , value ) )
91+ if ( SetProperty ( ref _filter , value ) )
9292 {
9393 var builder = BuildBranchTree ( _branches , _remotes ) ;
9494 LocalBranchTrees = builder . Locals ;
9595 RemoteBranchTrees = builder . Remotes ;
9696 VisibleTags = BuildVisibleTags ( ) ;
97+ VisibleSubmodules = BuildVisibleSubmodules ( ) ;
9798 }
9899 }
99100 }
@@ -152,6 +153,12 @@ public List<Models.Submodule> Submodules
152153 private set => SetProperty ( ref _submodules , value ) ;
153154 }
154155
156+ public List < Models . Submodule > VisibleSubmodules
157+ {
158+ get => _visibleSubmodules ;
159+ private set => SetProperty ( ref _visibleSubmodules , value ) ;
160+ }
161+
155162 public int LocalChangesCount
156163 {
157164 get => _localChangesCount ;
@@ -391,6 +398,7 @@ public void Close()
391398 _tags . Clear ( ) ;
392399 _visibleTags . Clear ( ) ;
393400 _submodules . Clear ( ) ;
401+ _visibleSubmodules . Clear ( ) ;
394402 _searchedCommits . Clear ( ) ;
395403
396404 _revisionFiles . Clear ( ) ;
@@ -525,6 +533,11 @@ public void Cleanup()
525533 PopupHost . ShowAndStartPopup ( new Cleanup ( this ) ) ;
526534 }
527535
536+ public void ClearFilter ( )
537+ {
538+ Filter = string . Empty ;
539+ }
540+
528541 public void ClearHistoriesFilter ( )
529542 {
530543 _settings . Filters . Clear ( ) ;
@@ -582,11 +595,6 @@ public void StartSearchCommits()
582595 } ) ;
583596 }
584597
585- public void ClearSearchBranchFilter ( )
586- {
587- SearchBranchFilter = string . Empty ;
588- }
589-
590598 public void SetWatcherEnabled ( bool enabled )
591599 {
592600 _watcher ? . SetEnabled ( enabled ) ;
@@ -811,7 +819,12 @@ public void RefreshSubmodules()
811819 {
812820 var submodules = new Commands . QuerySubmodules ( _fullpath ) . Result ( ) ;
813821 _watcher ? . SetSubmodules ( submodules ) ;
814- Dispatcher . UIThread . Invoke ( ( ) => Submodules = submodules ) ;
822+
823+ Dispatcher . UIThread . Invoke ( ( ) =>
824+ {
825+ Submodules = submodules ;
826+ VisibleSubmodules = BuildVisibleSubmodules ( ) ;
827+ } ) ;
815828 }
816829
817830 public void RefreshWorkingCopyChanges ( )
@@ -1919,7 +1932,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19191932 var builder = new BranchTreeNode . Builder ( ) ;
19201933 builder . SetFilters ( _settings . Filters ) ;
19211934
1922- if ( string . IsNullOrEmpty ( _searchBranchFilter ) )
1935+ if ( string . IsNullOrEmpty ( _filter ) )
19231936 {
19241937 builder . CollectExpandedNodes ( _localBranchTrees , true ) ;
19251938 builder . CollectExpandedNodes ( _remoteBranchTrees , false ) ;
@@ -1930,7 +1943,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19301943 var visibles = new List < Models . Branch > ( ) ;
19311944 foreach ( var b in branches )
19321945 {
1933- if ( b . FullName . Contains ( _searchBranchFilter , StringComparison . OrdinalIgnoreCase ) )
1946+ if ( b . FullName . Contains ( _filter , StringComparison . OrdinalIgnoreCase ) )
19341947 visibles . Add ( b ) ;
19351948 }
19361949
@@ -1943,22 +1956,40 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
19431956 private List < Models . Tag > BuildVisibleTags ( )
19441957 {
19451958 var visible = new List < Models . Tag > ( ) ;
1946- if ( string . IsNullOrEmpty ( _searchBranchFilter ) )
1959+ if ( string . IsNullOrEmpty ( _filter ) )
19471960 {
19481961 visible . AddRange ( _tags ) ;
19491962 }
19501963 else
19511964 {
19521965 foreach ( var t in _tags )
19531966 {
1954- if ( t . Name . Contains ( _searchBranchFilter , StringComparison . OrdinalIgnoreCase ) )
1967+ if ( t . Name . Contains ( _filter , StringComparison . OrdinalIgnoreCase ) )
19551968 visible . Add ( t ) ;
19561969 }
19571970 }
19581971
19591972 return visible ;
19601973 }
19611974
1975+ private List < Models . Submodule > BuildVisibleSubmodules ( )
1976+ {
1977+ var visible = new List < Models . Submodule > ( ) ;
1978+ if ( string . IsNullOrEmpty ( _filter ) )
1979+ {
1980+ visible . AddRange ( _submodules ) ;
1981+ }
1982+ else
1983+ {
1984+ foreach ( var s in _submodules )
1985+ {
1986+ if ( s . Path . Contains ( _filter , StringComparison . OrdinalIgnoreCase ) )
1987+ visible . Add ( s ) ;
1988+ }
1989+ }
1990+ return visible ;
1991+ }
1992+
19621993 private void UpdateCurrentRevisionFilesForSearchSuggestion ( )
19631994 {
19641995 _revisionFiles . Clear ( ) ;
@@ -2002,8 +2033,7 @@ private void UpdateCurrentRevisionFilesForSearchSuggestion()
20022033 private bool _isSubmoduleGroupExpanded = false ;
20032034 private bool _isWorktreeGroupExpanded = false ;
20042035
2005- private string _searchBranchFilter = string . Empty ;
2006-
2036+ private string _filter = string . Empty ;
20072037 private List < Models . Remote > _remotes = new List < Models . Remote > ( ) ;
20082038 private List < Models . Branch > _branches = new List < Models . Branch > ( ) ;
20092039 private Models . Branch _currentBranch = null ;
@@ -2013,8 +2043,9 @@ private void UpdateCurrentRevisionFilesForSearchSuggestion()
20132043 private List < Models . Tag > _tags = new List < Models . Tag > ( ) ;
20142044 private List < Models . Tag > _visibleTags = new List < Models . Tag > ( ) ;
20152045 private List < Models . Submodule > _submodules = new List < Models . Submodule > ( ) ;
2016- private bool _includeUntracked = true ;
2046+ private List < Models . Submodule > _visibleSubmodules = new List < Models . Submodule > ( ) ;
20172047
2048+ private bool _includeUntracked = true ;
20182049 private InProgressContext _inProgressContext = null ;
20192050 private bool _hasUnsolvedConflicts = false ;
20202051 private Models . Commit _searchResultSelectedCommit = null ;
0 commit comments