feature: when toggle a local branch filter, if it has a tracked upstream branch, do the same for the upstream branch (#513)

This commit is contained in:
leo 2024-09-25 20:30:48 +08:00
parent 85b83990a8
commit a8ce4e6d95
No known key found for this signature in database
5 changed files with 54 additions and 16 deletions

View file

@ -15,10 +15,15 @@ namespace SourceGit.ViewModels
public string Name { get; private set; } = string.Empty;
public object Backend { get; private set; } = null;
public int Depth { get; set; } = 0;
public bool IsFiltered { get; set; } = false;
public bool IsSelected { get; set; } = false;
public List<BranchTreeNode> Children { get; private set; } = new List<BranchTreeNode>();
public bool IsFiltered
{
get => _isFiltered;
set => SetProperty(ref _isFiltered, value);
}
public bool IsExpanded
{
get => _isExpanded;
@ -46,6 +51,7 @@ namespace SourceGit.ViewModels
get => Backend is Models.Branch b ? b.FriendlyName : null;
}
private bool _isFiltered = false;
private bool _isExpanded = false;
private CornerRadius _cornerRadius = new CornerRadius(4);

View file

@ -643,20 +643,24 @@ namespace SourceGit.ViewModels
NavigateToCommit(_currentBranch.Head);
}
public void UpdateFilter(string filter, bool toggle)
public void UpdateFilters(List<string> filters, bool toggle)
{
var changed = false;
if (toggle)
{
if (!_settings.Filters.Contains(filter))
foreach (var filter in filters)
{
_settings.Filters.Add(filter);
changed = true;
if (!_settings.Filters.Contains(filter))
{
_settings.Filters.Add(filter);
changed = true;
}
}
}
else
{
changed = _settings.Filters.Remove(filter);
foreach (var filter in filters)
changed |= _settings.Filters.Remove(filter);
}
if (changed)