diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 5df604da..ec507f39 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -1448,6 +1448,13 @@ namespace SourceGit.ViewModels } } + public async Task CheckoutTagAsync(Models.Tag tag) + { + var c = await new Commands.QuerySingleCommit(_fullpath, tag.SHA).GetResultAsync(); + if (c != null) + _histories?.CheckoutBranchByCommit(c); + } + public async Task CompareBranchWithWorktree(Models.Branch branch) { if (_histories != null) diff --git a/src/Views/TagsView.axaml b/src/Views/TagsView.axaml index 655d046a..5e0bcbfb 100644 --- a/src/Views/TagsView.axaml +++ b/src/Views/TagsView.axaml @@ -96,6 +96,7 @@ diff --git a/src/Views/TagsView.axaml.cs b/src/Views/TagsView.axaml.cs index 7ea53e3e..79c36a6e 100644 --- a/src/Views/TagsView.axaml.cs +++ b/src/Views/TagsView.axaml.cs @@ -155,10 +155,20 @@ namespace SourceGit.Views } } - private void OnItemDoubleTapped(object sender, TappedEventArgs e) + private async void OnItemDoubleTapped(object sender, TappedEventArgs e) { - if (sender is Control { DataContext: ViewModels.TagTreeNode { IsFolder: true } node }) - ToggleNodeIsExpanded(node); + if (sender is Control { DataContext: ViewModels.TagTreeNode node }) + { + if (node.IsFolder) + ToggleNodeIsExpanded(node); + else if (DataContext is ViewModels.Repository repo) + await repo.CheckoutTagAsync(node.Tag); + } + else if (sender is Control { DataContext: Models.Tag tag }) + { + if (DataContext is ViewModels.Repository repo) + await repo.CheckoutTagAsync(tag); + } e.Handled = true; }