mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-28 23:54:59 +00:00

- move issue tracker and commit hash links parsing to view models - parsing links async - make sure matched hash is a valid commit oid - disable `CHILDREN` row in submodule info panel Signed-off-by: leo <longshuang@msn.cn>
84 lines
2.6 KiB
C#
84 lines
2.6 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Input;
|
|
|
|
namespace SourceGit.Views
|
|
{
|
|
public partial class RevisionFiles : UserControl
|
|
{
|
|
public RevisionFiles()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void OnSearchBoxKeyDown(object _, KeyEventArgs e)
|
|
{
|
|
var vm = DataContext as ViewModels.CommitDetail;
|
|
if (vm == null)
|
|
return;
|
|
|
|
if (e.Key == Key.Enter)
|
|
{
|
|
FileTree.SetSearchResult(vm.RevisionFileSearchFilter);
|
|
e.Handled = true;
|
|
}
|
|
else if (e.Key == Key.Down || e.Key == Key.Up)
|
|
{
|
|
if (vm.RevisionFileSearchSuggestion.Count > 0)
|
|
{
|
|
SearchSuggestionBox.Focus(NavigationMethod.Tab);
|
|
SearchSuggestionBox.SelectedIndex = 0;
|
|
}
|
|
|
|
e.Handled = true;
|
|
}
|
|
else if (e.Key == Key.Escape)
|
|
{
|
|
vm.CancelRevisionFileSuggestions();
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnSearchBoxTextChanged(object _, TextChangedEventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(TxtSearchRevisionFiles.Text))
|
|
FileTree.SetSearchResult(null);
|
|
}
|
|
|
|
private void OnSearchSuggestionBoxKeyDown(object _, KeyEventArgs e)
|
|
{
|
|
var vm = DataContext as ViewModels.CommitDetail;
|
|
if (vm == null)
|
|
return;
|
|
|
|
if (e.Key == Key.Escape)
|
|
{
|
|
vm.CancelRevisionFileSuggestions();
|
|
e.Handled = true;
|
|
}
|
|
else if (e.Key == Key.Enter && SearchSuggestionBox.SelectedItem is string content)
|
|
{
|
|
vm.RevisionFileSearchFilter = content;
|
|
TxtSearchRevisionFiles.CaretIndex = content.Length;
|
|
FileTree.SetSearchResult(vm.RevisionFileSearchFilter);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
private void OnSearchSuggestionDoubleTapped(object sender, TappedEventArgs e)
|
|
{
|
|
var vm = DataContext as ViewModels.CommitDetail;
|
|
if (vm == null)
|
|
return;
|
|
|
|
var content = (sender as StackPanel)?.DataContext as string;
|
|
if (!string.IsNullOrEmpty(content))
|
|
{
|
|
vm.RevisionFileSearchFilter = content;
|
|
TxtSearchRevisionFiles.CaretIndex = content.Length;
|
|
FileTree.SetSearchResult(vm.RevisionFileSearchFilter);
|
|
}
|
|
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|