diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 9abb3bdcc..2e1579242 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -687,6 +687,7 @@ Use fixed tab width in titlebar Use native window frame DIFF/MERGE TOOL + Bind to double click Diff Arguments Available variables: $LOCAL, $REMOTE Merge Arguments diff --git a/src/ViewModels/Preferences.cs b/src/ViewModels/Preferences.cs index 4803ec429..cf84e88ff 100644 --- a/src/ViewModels/Preferences.cs +++ b/src/ViewModels/Preferences.cs @@ -384,6 +384,12 @@ public string ShellOrTerminalArgs } } + public bool ExternalMergeToolBindToDoubleClick + { + get => _externalMergeToolBindToDoubleClick; + set => SetProperty(ref _externalMergeToolBindToDoubleClick, value); + } + public int ExternalMergeToolType { get => Native.OS.ExternalMergerType; @@ -846,5 +852,6 @@ private bool RemoveInvalidRepositoriesRecursive(List collection) private string _gitDefaultCloneDir = string.Empty; private int _shellOrTerminalType = -1; + private bool _externalMergeToolBindToDoubleClick = false; } } diff --git a/src/Views/CommitChanges.axaml b/src/Views/CommitChanges.axaml index d14b14eca..19c6d76c3 100644 --- a/src/Views/CommitChanges.axaml +++ b/src/Views/CommitChanges.axaml @@ -58,6 +58,7 @@ EnableCompactFolders="{Binding Source={x:Static vm:Preferences.Instance}, Path=EnableCompactFoldersInChangesTree}" Changes="{Binding VisibleChanges, Mode=OneWay}" Selection="{Binding ChangeSelection, Mode=TwoWay}" + ChangeDoubleTapped="OnChangeDoubleTapped" ContextRequested="OnChangeContextRequested" KeyDown="OnChangeCollectionViewKeyDown"/> diff --git a/src/Views/CommitChanges.axaml.cs b/src/Views/CommitChanges.axaml.cs index 5ff13d593..8d948393e 100644 --- a/src/Views/CommitChanges.axaml.cs +++ b/src/Views/CommitChanges.axaml.cs @@ -4,6 +4,7 @@ using System.Text; using Avalonia.Controls; using Avalonia.Input; +using Avalonia.Interactivity; using Avalonia.Platform.Storage; using Avalonia.VisualTree; @@ -16,6 +17,17 @@ public CommitChanges() InitializeComponent(); } + private void OnChangeDoubleTapped(object sender, RoutedEventArgs e) + { + if (ViewModels.Preferences.Instance.ExternalMergeToolBindToDoubleClick && + DataContext is ViewModels.CommitDetail vm && + sender is ChangeCollectionView { Selection: { Count: 1, HasFolder: false } selection }) + { + vm.OpenChangeInMergeTool(selection.Changes[0]); + e.Handled = true; + } + } + private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e) { e.Handled = true; diff --git a/src/Views/Preferences.axaml b/src/Views/Preferences.axaml index 5a19a248f..da68e4bd9 100644 --- a/src/Views/Preferences.axaml +++ b/src/Views/Preferences.axaml @@ -586,7 +586,7 @@ - + @@ -672,6 +672,10 @@ + +