code_review: PR #1412

- Use `ViewModels.StashesPage.SelectedStash` instead of `sender is not ListBox { SelectedValue: Models.Stash stash }`
- In tags view, `SelectedItem` can be `Models.Tag` or `ViewModels.TagTreeNode`
- In logs window, `vm.SelectedLog` may be null

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-06-11 16:13:47 +08:00
parent 196b454ae8
commit a128b67bd4
No known key found for this signature in database
10 changed files with 56 additions and 70 deletions

View file

@ -31,9 +31,25 @@ namespace SourceGit.Views
protected override void OnKeyDown(KeyEventArgs e)
{
if (SelectedItem is ViewModels.RepositoryNode { IsRepository: false } node && e.KeyModifiers == KeyModifiers.None)
if (SelectedItem is ViewModels.RepositoryNode node && e.KeyModifiers == KeyModifiers.None)
{
if ((node.IsExpanded && e.Key == Key.Left) || (!node.IsExpanded && e.Key == Key.Right))
if (e.Key is Key.Delete or Key.Back)
{
node.Delete();
e.Handled = true;
}
else if (node.IsRepository)
{
if (e.Key == Key.Enter)
{
var parent = this.FindAncestorOfType<Launcher>();
if (parent is { DataContext: ViewModels.Launcher launcher })
launcher.OpenRepositoryInTab(node, null);
e.Handled = true;
}
}
else if ((node.IsExpanded && e.Key == Key.Left) || (!node.IsExpanded && e.Key == Key.Right) || e.Key == Key.Enter)
{
ViewModels.Welcome.Instance.ToggleNodeIsExpanded(node);
e.Handled = true;
@ -92,33 +108,6 @@ namespace SourceGit.Views
}
}
private void OnTreeViewKeyDown(object _, KeyEventArgs e)
{
if (TreeContainer.SelectedItem is ViewModels.RepositoryNode node)
{
if (e.Key == Key.Enter)
{
if (node.IsRepository)
{
var parent = this.FindAncestorOfType<Launcher>();
if (parent is { DataContext: ViewModels.Launcher launcher })
launcher.OpenRepositoryInTab(node, null);
}
else
{
ViewModels.Welcome.Instance.ToggleNodeIsExpanded(node);
}
e.Handled = true;
}
else if (e.Key is Key.Delete or Key.Back)
{
node.Delete();
e.Handled = true;
}
}
}
private void OnTreeNodeContextRequested(object sender, ContextRequestedEventArgs e)
{
if (sender is Grid { DataContext: ViewModels.RepositoryNode node } grid)