mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-21 12:15:00 +00:00
enhance: clear histories filter if there's a filter that has different modes with the new one (#690)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
a53787c754
commit
44557c066c
4 changed files with 105 additions and 74 deletions
|
@ -670,13 +670,17 @@ namespace SourceGit.ViewModels
|
|||
public void ClearHistoriesFilter()
|
||||
{
|
||||
_settings.HistoriesFilters.Clear();
|
||||
ResetBranchTreeFilterMode(LocalBranchTrees);
|
||||
ResetBranchTreeFilterMode(RemoteBranchTrees);
|
||||
ResetTagFilterMode();
|
||||
Task.Run(RefreshCommits);
|
||||
}
|
||||
|
||||
var builder = BuildBranchTree(_branches, _remotes);
|
||||
LocalBranchTrees = builder.Locals;
|
||||
RemoteBranchTrees = builder.Remotes;
|
||||
foreach (var tag in VisibleTags)
|
||||
tag.FilterMode = Models.FilterMode.None;
|
||||
|
||||
public void MarkHistoriesFilterDirty()
|
||||
{
|
||||
UpdateBranchTreeFilterMode(LocalBranchTrees, true);
|
||||
UpdateBranchTreeFilterMode(RemoteBranchTrees, false);
|
||||
UpdateTagFilterMode();
|
||||
Task.Run(RefreshCommits);
|
||||
}
|
||||
|
||||
|
@ -1957,7 +1961,7 @@ namespace SourceGit.ViewModels
|
|||
|
||||
private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, List<Models.Remote> remotes)
|
||||
{
|
||||
var builder = new BranchTreeNode.Builder(_settings);
|
||||
var builder = new BranchTreeNode.Builder();
|
||||
if (string.IsNullOrEmpty(_filter))
|
||||
{
|
||||
builder.CollectExpandedNodes(_localBranchTrees);
|
||||
|
@ -1976,6 +1980,8 @@ namespace SourceGit.ViewModels
|
|||
builder.Run(visibles, remotes, true);
|
||||
}
|
||||
|
||||
UpdateBranchTreeFilterMode(builder.Locals, true);
|
||||
UpdateBranchTreeFilterMode(builder.Remotes, false);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
@ -1995,6 +2001,7 @@ namespace SourceGit.ViewModels
|
|||
}
|
||||
}
|
||||
|
||||
UpdateTagFilterMode();
|
||||
return visible;
|
||||
}
|
||||
|
||||
|
@ -2016,6 +2023,44 @@ namespace SourceGit.ViewModels
|
|||
return visible;
|
||||
}
|
||||
|
||||
private void UpdateBranchTreeFilterMode(List<BranchTreeNode> nodes, bool isLocal)
|
||||
{
|
||||
foreach (var node in nodes)
|
||||
{
|
||||
if (node.IsBranch)
|
||||
{
|
||||
node.FilterMode = _settings.GetHistoriesFilterMode(node.Path, isLocal ? Models.FilterType.LocalBranch : Models.FilterType.RemoteBranch);
|
||||
}
|
||||
else
|
||||
{
|
||||
node.FilterMode = _settings.GetHistoriesFilterMode(node.Path, isLocal ? Models.FilterType.LocalBranchFolder : Models.FilterType.RemoteBranchFolder);
|
||||
UpdateBranchTreeFilterMode(node.Children, isLocal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateTagFilterMode()
|
||||
{
|
||||
foreach (var tag in _tags)
|
||||
tag.FilterMode = _settings.GetHistoriesFilterMode(tag.Name, Models.FilterType.Tag);
|
||||
}
|
||||
|
||||
private void ResetBranchTreeFilterMode(List<BranchTreeNode> nodes)
|
||||
{
|
||||
foreach (var node in nodes)
|
||||
{
|
||||
node.FilterMode = Models.FilterMode.None;
|
||||
if (!node.IsBranch)
|
||||
ResetBranchTreeFilterMode(node.Children);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetTagFilterMode()
|
||||
{
|
||||
foreach (var tag in _tags)
|
||||
tag.FilterMode = Models.FilterMode.None;
|
||||
}
|
||||
|
||||
private void UpdateCurrentRevisionFilesForSearchSuggestion()
|
||||
{
|
||||
_revisionFiles.Clear();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue