mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-24 02:40:24 +08:00
fix: hotkeys not work in change list (INFORMATION page)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -246,6 +246,14 @@ namespace SourceGit.ViewModels
|
||||
return Native.OS.GetAbsPath(_repo.FullPath, path);
|
||||
}
|
||||
|
||||
public void OpenChangeInMergeTool(Models.Change c)
|
||||
{
|
||||
var toolType = Preferences.Instance.ExternalMergeToolType;
|
||||
var toolPath = Preferences.Instance.ExternalMergeToolPath;
|
||||
var opt = new Models.DiffOption(_commit, c);
|
||||
new Commands.DiffTool(_repo.FullPath, toolType, toolPath, opt).Open();
|
||||
}
|
||||
|
||||
public ContextMenu CreateChangeContextMenuByFolder(ChangeTreeNode node, List<Models.Change> changes)
|
||||
{
|
||||
var fullPath = Native.OS.GetAbsPath(_repo.FullPath, node.FullPath);
|
||||
@@ -335,10 +343,7 @@ namespace SourceGit.ViewModels
|
||||
openWithMerger.Tag = OperatingSystem.IsMacOS() ? "⌘+⇧+D" : "Ctrl+Shift+D";
|
||||
openWithMerger.Click += (_, ev) =>
|
||||
{
|
||||
var toolType = Preferences.Instance.ExternalMergeToolType;
|
||||
var toolPath = Preferences.Instance.ExternalMergeToolPath;
|
||||
var opt = new Models.DiffOption(_commit, change);
|
||||
new Commands.DiffTool(_repo.FullPath, toolType, toolPath, opt).Open();
|
||||
OpenChangeInMergeTool(change);
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -11,6 +11,29 @@ namespace SourceGit.Views
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void OnCommitListKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (DataContext is ViewModels.CommitDetail detail &&
|
||||
sender is ListBox { SelectedItem: Models.Change change } &&
|
||||
e.KeyModifiers.HasFlag(OperatingSystem.IsMacOS() ? KeyModifiers.Meta : KeyModifiers.Control))
|
||||
{
|
||||
if (e.Key == Key.C)
|
||||
{
|
||||
var path = change.Path;
|
||||
if (e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
||||
path = detail.GetAbsPath(path);
|
||||
|
||||
await App.CopyTextAsync(path);
|
||||
e.Handled = true;
|
||||
}
|
||||
else if (e.Key == Key.D && e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
||||
{
|
||||
detail.OpenChangeInMergeTool(change);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnChangeDoubleTapped(object sender, TappedEventArgs e)
|
||||
{
|
||||
if (DataContext is ViewModels.CommitDetail detail && sender is Grid { DataContext: Models.Change change })
|
||||
@@ -32,21 +55,5 @@ namespace SourceGit.Views
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private async void OnCommitListKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (DataContext is ViewModels.CommitDetail detail && sender is Grid { DataContext: Models.Change change })
|
||||
{
|
||||
if (e.Key == Key.C && e.KeyModifiers.HasFlag(OperatingSystem.IsMacOS() ? KeyModifiers.Meta : KeyModifiers.Control))
|
||||
{
|
||||
var path = change.Path;
|
||||
if (e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
||||
path = detail.GetAbsPath(path);
|
||||
|
||||
await App.CopyTextAsync(path);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user