feature: support using left/right arrow to expand/collapse tree node (#463)

This commit is contained in:
leo 2024-09-22 20:48:36 +08:00
parent 01380ff194
commit 07cba1cf5f
No known key found for this signature in database
5 changed files with 82 additions and 37 deletions

View file

@ -33,7 +33,16 @@ namespace SourceGit.Views
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Key != Key.Space)
if (SelectedItems is [ViewModels.ChangeTreeNode { IsFolder: true } node] && e.KeyModifiers == KeyModifiers.None)
{
if ((node.IsExpanded && e.Key == Key.Left) || (!node.IsExpanded && e.Key == Key.Right))
{
this.FindAncestorOfType<ChangeCollectionView>()?.ToggleNodeIsExpanded(node);
e.Handled = true;
}
}
if (!e.Handled && e.Key != Key.Space)
base.OnKeyDown(e);
}
}
@ -157,13 +166,11 @@ namespace SourceGit.Views
{
if (lastUnselected == -1)
continue;
else
break;
}
else
{
lastUnselected = i;
break;
}
lastUnselected = i;
}
}
@ -179,13 +186,11 @@ namespace SourceGit.Views
{
if (lastUnselected == -1)
continue;
else
break;
}
else
{
lastUnselected = i;
break;
}
lastUnselected = i;
}
if (lastUnselected != -1)
@ -239,9 +244,9 @@ namespace SourceGit.Views
_disableSelectionChangingEvent = true;
var selected = new List<Models.Change>();
if (sender is ListBox list)
if (sender is ListBox { SelectedItems: {} selectedItems })
{
foreach (var item in list.SelectedItems)
foreach (var item in selectedItems)
{
if (item is Models.Change c)
selected.Add(c);