diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 1aaa6bd9e..43b0fc833 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -891,10 +891,26 @@ public void NavigateToCommit(string sha, bool isDelayMode = false) else { SelectedViewIndex = 0; + if (sha == "HEAD") + sha = _currentBranch.Head; _histories?.NavigateTo(sha); } } + public void NavigateToBranch(string branch, bool isDelayMode = false) + { + var b = _branches.Find(b => b.FullName.Equals(branch, StringComparison.Ordinal)); + if (b != null) + NavigateToCommit(b.Head); + } + + public void NavigateToTag(string tag, bool isDelayMode = false) + { + var t = _tags.Find(t => t.Name.Equals(tag, StringComparison.Ordinal)); + if (t != null) + NavigateToCommit(t.SHA); + } + public void SetCommitMessage(string message) { if (_workingCopy is not null) diff --git a/src/Views/Repository.axaml b/src/Views/Repository.axaml index b7c22b2f6..89a1b7d5e 100644 --- a/src/Views/Repository.axaml +++ b/src/Views/Repository.axaml @@ -821,8 +821,14 @@ - - + diff --git a/src/Views/Repository.axaml.cs b/src/Views/Repository.axaml.cs index 8f040310d..4d10bb15b 100644 --- a/src/Views/Repository.axaml.cs +++ b/src/Views/Repository.axaml.cs @@ -593,6 +593,31 @@ private async void OnAbortInProgress(object sender, RoutedEventArgs e) e.Handled = true; } + private void OnNavigateToFilter(object sender, RoutedEventArgs e) + { + if (DataContext is ViewModels.Repository repo && sender is Button { DataContext: Models.HistoryFilter filter }) + { + if (filter.Mode == Models.FilterMode.Excluded) + return; + + switch (filter.Type) + { + default: + case Models.FilterType.LocalBranchFolder: + case Models.FilterType.RemoteBranchFolder: + break; + case Models.FilterType.LocalBranch: + case Models.FilterType.RemoteBranch: + repo.NavigateToBranch(filter.Pattern); + break; + case Models.FilterType.Tag: + repo.NavigateToTag(filter.Pattern); + break; + } + e.Handled = true; + } + } + private void OnRemoveSelectedHistoryFilter(object sender, RoutedEventArgs e) { if (DataContext is ViewModels.Repository repo && sender is Button { DataContext: Models.HistoryFilter filter })