From 4f11d8a0778149c6aa2cc2ea15276a433526fa17 Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 10 Nov 2025 11:31:03 +0800 Subject: [PATCH] feature: auto-remove history filter after deleting branch or tag (#1904) Signed-off-by: leo --- src/Models/HistoryFilterCollection.cs | 12 ++++++++++++ src/ViewModels/DeleteBranch.cs | 3 +++ src/ViewModels/DeleteTag.cs | 1 + 3 files changed, 16 insertions(+) diff --git a/src/Models/HistoryFilterCollection.cs b/src/Models/HistoryFilterCollection.cs index d9f6d632..e2aeb56b 100644 --- a/src/Models/HistoryFilterCollection.cs +++ b/src/Models/HistoryFilterCollection.cs @@ -141,6 +141,18 @@ namespace SourceGit.Models return FilterMode.None; } + public void RemoveFilter(string pattern, FilterType type) + { + foreach (var filter in Filters) + { + if (filter.Type == type && filter.Pattern.Equals(pattern, StringComparison.Ordinal)) + { + Filters.Remove(filter); + break; + } + } + } + public void RemoveBranchFiltersByPrefix(string pattern) { var dirty = new List(); diff --git a/src/ViewModels/DeleteBranch.cs b/src/ViewModels/DeleteBranch.cs index fee35895..75fd1627 100644 --- a/src/ViewModels/DeleteBranch.cs +++ b/src/ViewModels/DeleteBranch.cs @@ -55,10 +55,13 @@ namespace SourceGit.ViewModels if (_alsoDeleteTrackingRemote && TrackingRemoteBranch != null) await DeleteRemoteBranchAsync(TrackingRemoteBranch, log); + + _repo.HistoryFilterCollection.RemoveFilter(Target.FullName, Models.FilterType.LocalBranch); } else { await DeleteRemoteBranchAsync(Target, log); + _repo.HistoryFilterCollection.RemoveFilter(Target.FullName, Models.FilterType.RemoteBranch); } log.Complete(); diff --git a/src/ViewModels/DeleteTag.cs b/src/ViewModels/DeleteTag.cs index 3525f05e..95790940 100644 --- a/src/ViewModels/DeleteTag.cs +++ b/src/ViewModels/DeleteTag.cs @@ -44,6 +44,7 @@ namespace SourceGit.ViewModels } log.Complete(); + _repo.HistoryFilterCollection.RemoveFilter(Target.Name, Models.FilterType.Tag); _repo.MarkTagsDirtyManually(); return succ; }