mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-25 14:15:00 +00:00
refactor: rewrite the histories filter function to supports both include
and exclude
modes (#690)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
e3ffe3ef6c
commit
ca5bc4b4df
27 changed files with 767 additions and 309 deletions
|
@ -428,28 +428,6 @@ namespace SourceGit.Views
|
|||
}
|
||||
}
|
||||
|
||||
private void OnToggleFilterClicked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (DataContext is ViewModels.Repository repo &&
|
||||
sender is ToggleButton toggle &&
|
||||
toggle.DataContext is ViewModels.BranchTreeNode { Backend: Models.Branch branch } node)
|
||||
{
|
||||
bool filtered = toggle.IsChecked == true;
|
||||
List<string> filters = [branch.FullName];
|
||||
if (branch.IsLocal && !string.IsNullOrEmpty(branch.Upstream))
|
||||
{
|
||||
filters.Add(branch.Upstream);
|
||||
|
||||
node.IsFiltered = filtered;
|
||||
UpdateUpstreamFilterState(repo.RemoteBranchTrees, branch.Upstream, filtered);
|
||||
}
|
||||
|
||||
repo.UpdateFilters(filters, filtered);
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void MakeRows(List<ViewModels.BranchTreeNode> rows, List<ViewModels.BranchTreeNode> nodes, int depth)
|
||||
{
|
||||
foreach (var node in nodes)
|
||||
|
@ -477,23 +455,6 @@ namespace SourceGit.Views
|
|||
CollectBranchesInNode(outs, sub);
|
||||
}
|
||||
|
||||
private bool UpdateUpstreamFilterState(List<ViewModels.BranchTreeNode> collection, string upstream, bool isFiltered)
|
||||
{
|
||||
foreach (var node in collection)
|
||||
{
|
||||
if (node.Backend is Models.Branch b && b.FullName == upstream)
|
||||
{
|
||||
node.IsFiltered = isFiltered;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (node.Backend is Models.Remote r && upstream.StartsWith($"refs/remotes/{r.Name}/", StringComparison.Ordinal))
|
||||
return UpdateUpstreamFilterState(node.Children, upstream, isFiltered);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool _disableSelectionChangingEvent = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue