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)