diff --git a/src/Views/BranchTree.axaml b/src/Views/BranchTree.axaml
index 0ac09e6c..c1fecf63 100644
--- a/src/Views/BranchTree.axaml
+++ b/src/Views/BranchTree.axaml
@@ -32,61 +32,63 @@
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
+
-
+
diff --git a/src/Views/BranchTree.axaml.cs b/src/Views/BranchTree.axaml.cs
index 51bb01e0..8542157d 100644
--- a/src/Views/BranchTree.axaml.cs
+++ b/src/Views/BranchTree.axaml.cs
@@ -318,6 +318,31 @@ namespace SourceGit.Views
}
}
+ private void OnNodePointerPressed(object sender, PointerPressedEventArgs e)
+ {
+ var p = e.GetCurrentPoint(this);
+ if (!p.Properties.IsLeftButtonPressed)
+ return;
+
+ if (DataContext is not ViewModels.Repository repo)
+ return;
+
+ if (sender is not Border { DataContext: ViewModels.BranchTreeNode node })
+ return;
+
+ if (node.Backend is not Models.Branch branch)
+ return;
+
+ if (BranchesPresenter.SelectedItems is { Count: > 0 })
+ {
+ var ctrl = OperatingSystem.IsMacOS() ? KeyModifiers.Meta : KeyModifiers.Control;
+ if (e.KeyModifiers.HasFlag(ctrl) || e.KeyModifiers.HasFlag(KeyModifiers.Shift))
+ return;
+ }
+
+ repo.NavigateToCommit(branch.Head);
+ }
+
private void OnNodesSelectionChanged(object _, SelectionChangedEventArgs e)
{
if (_disableSelectionChangingEvent)
@@ -343,9 +368,6 @@ namespace SourceGit.Views
if (selected == null || selected.Count == 0)
return;
- if (selected.Count == 1 && selected[0] is ViewModels.BranchTreeNode { Backend: Models.Branch branch })
- repo.NavigateToCommit(branch.Head);
-
var prev = null as ViewModels.BranchTreeNode;
foreach (var row in Rows)
{
diff --git a/src/Views/TagsView.axaml b/src/Views/TagsView.axaml
index b5384c8f..2a575cb3 100644
--- a/src/Views/TagsView.axaml
+++ b/src/Views/TagsView.axaml
@@ -26,36 +26,36 @@
SelectionChanged="OnRowSelectionChanged">
-
-
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -69,23 +69,22 @@
SelectionChanged="OnRowSelectionChanged">
-
-
+
+
+
-
+
-
-
+
+
+
diff --git a/src/Views/TagsView.axaml.cs b/src/Views/TagsView.axaml.cs
index c83cfd28..ba6740c0 100644
--- a/src/Views/TagsView.axaml.cs
+++ b/src/Views/TagsView.axaml.cs
@@ -199,15 +199,27 @@ namespace SourceGit.Views
private void OnDoubleTappedNode(object sender, TappedEventArgs e)
{
- if (sender is Grid { DataContext: ViewModels.TagTreeNode node })
- {
- if (node.IsFolder)
- ToggleNodeIsExpanded(node);
- }
+ if (sender is Control { DataContext: ViewModels.TagTreeNode { IsFolder: true } node })
+ ToggleNodeIsExpanded(node);
e.Handled = true;
}
+ private void OnRowPointerPressed(object sender, PointerPressedEventArgs e)
+ {
+ var p = e.GetCurrentPoint(this);
+ if (!p.Properties.IsLeftButtonPressed)
+ return;
+
+ if (DataContext is not ViewModels.Repository repo)
+ return;
+
+ if (sender is Control { DataContext: Models.Tag tag })
+ repo.NavigateToCommit(tag.SHA);
+ else if (sender is Control { DataContext: ViewModels.TagTreeNode { Tag: { } nodeTag } })
+ repo.NavigateToCommit(nodeTag.SHA);
+ }
+
private void OnRowContextRequested(object sender, ContextRequestedEventArgs e)
{
var control = sender as Control;
@@ -240,11 +252,8 @@ namespace SourceGit.Views
else if (selected is Models.Tag tag)
selectedTag = tag;
- if (selectedTag != null && DataContext is ViewModels.Repository repo)
- {
+ if (selectedTag != null)
RaiseEvent(new RoutedEventArgs(SelectionChangedEvent));
- repo.NavigateToCommit(selectedTag.SHA);
- }
}
private void MakeTreeRows(List rows, List nodes)