diff --git a/src/Models/RepositoryUIStates.cs b/src/Models/RepositoryUIStates.cs index 0b35f8d61..8657b93b6 100644 --- a/src/Models/RepositoryUIStates.cs +++ b/src/Models/RepositoryUIStates.cs @@ -357,6 +357,17 @@ public bool UpdateHistoryFilters(string pattern, FilterType type, FilterMode mod return true; } + public bool IsCoveredByFolderFilter(string path, FilterType type) + { + foreach (var filter in HistoryFilters) + { + if (filter.Type == type && path.StartsWith($"{filter.Pattern}/", StringComparison.Ordinal)) + return true; + } + + return false; + } + public void RemoveHistoryFilter(string pattern, FilterType type) { foreach (var filter in HistoryFilters) diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index aa58226d9..1ea5951a8 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -774,7 +774,8 @@ public void RefreshAfterCreateBranch(Models.Branch created, bool checkout) if (folderEndIdx > 10) _uiStates.ExpandedBranchNodesInSideBar.Add(created.FullName.Substring(0, folderEndIdx)); - if (_historyFilterMode == Models.FilterMode.Included) + if (_historyFilterMode == Models.FilterMode.Included && + !_uiStates.IsCoveredByFolderFilter(created.FullName, Models.FilterType.LocalBranchFolder)) SetBranchFilterMode(created, Models.FilterMode.Included, false, false); CurrentBranch = created; @@ -817,7 +818,8 @@ public void RefreshAfterCheckoutBranch(Models.Branch checkouted) checkouted.IsCurrent = true; checkouted.WorktreePath = FullPath; - if (_historyFilterMode == Models.FilterMode.Included) + if (_historyFilterMode == Models.FilterMode.Included && + !_uiStates.IsCoveredByFolderFilter(checkouted.FullName, Models.FilterType.LocalBranchFolder)) SetBranchFilterMode(checkouted, Models.FilterMode.Included, false, false); List locals = [];