From a4306fe6e3335cc968dc1ea2535117ab439f7f1c Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 4 Aug 2025 17:51:46 +0800 Subject: [PATCH] feature: double-clicking tag will try to checkout (detached mode) the revision refered by selected tag (#1661) Signed-off-by: leo --- src/ViewModels/Repository.cs | 7 +++++++ src/Views/TagsView.axaml | 1 + src/Views/TagsView.axaml.cs | 16 +++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) 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; }