mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-05 02:54:59 +00:00
enhance: allow to use arrow keys to select changes up/down after stage/unstage previous selected changes by hotkey (#1361)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
ef53dd0025
commit
22339ab619
4 changed files with 20 additions and 11 deletions
|
@ -30,7 +30,8 @@
|
|||
|
||||
<UserControl.DataTemplates>
|
||||
<DataTemplate DataType="vm:ChangeCollectionAsTree">
|
||||
<v:ChangeCollectionContainer ItemsSource="{Binding Rows}"
|
||||
<v:ChangeCollectionContainer Focusable="True"
|
||||
ItemsSource="{Binding Rows}"
|
||||
SelectedItems="{Binding SelectedRows, Mode=TwoWay}"
|
||||
SelectionMode="{Binding #ThisControl.SelectionMode}"
|
||||
SelectionChanged="OnRowSelectionChanged">
|
||||
|
@ -66,7 +67,8 @@
|
|||
</DataTemplate>
|
||||
|
||||
<DataTemplate DataType="vm:ChangeCollectionAsGrid">
|
||||
<v:ChangeCollectionContainer ItemsSource="{Binding Changes}"
|
||||
<v:ChangeCollectionContainer Focusable="True"
|
||||
ItemsSource="{Binding Changes}"
|
||||
SelectedItems="{Binding SelectedChanges, Mode=TwoWay}"
|
||||
SelectionMode="{Binding #ThisControl.SelectionMode}"
|
||||
SelectionChanged="OnRowSelectionChanged">
|
||||
|
@ -98,7 +100,8 @@
|
|||
</DataTemplate>
|
||||
|
||||
<DataTemplate DataType="vm:ChangeCollectionAsList">
|
||||
<v:ChangeCollectionContainer ItemsSource="{Binding Changes}"
|
||||
<v:ChangeCollectionContainer Focusable="True"
|
||||
ItemsSource="{Binding Changes}"
|
||||
SelectedItems="{Binding SelectedChanges, Mode=TwoWay}"
|
||||
SelectionMode="{Binding #ThisControl.SelectionMode}"
|
||||
SelectionChanged="OnRowSelectionChanged">
|
||||
|
|
|
@ -145,6 +145,7 @@ namespace SourceGit.Views
|
|||
|
||||
removeCount++;
|
||||
}
|
||||
|
||||
tree.Rows.RemoveRange(idx + 1, removeCount);
|
||||
}
|
||||
}
|
||||
|
@ -209,6 +210,13 @@ namespace SourceGit.Views
|
|||
return null;
|
||||
}
|
||||
|
||||
public void TakeFocus()
|
||||
{
|
||||
var container = this.FindDescendantOfType<ChangeCollectionContainer>();
|
||||
if (container is { IsFocused: false })
|
||||
container.Focus();
|
||||
}
|
||||
|
||||
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
||||
{
|
||||
base.OnPropertyChanged(change);
|
||||
|
|
|
@ -122,7 +122,6 @@
|
|||
<!-- Unstaged Changes -->
|
||||
<v:ChangeCollectionView Grid.Row="1"
|
||||
x:Name="UnstagedChangesView"
|
||||
Focusable="True"
|
||||
IsUnstagedChange="True"
|
||||
SelectionMode="Multiple"
|
||||
Background="{DynamicResource Brush.Contents}"
|
||||
|
@ -173,7 +172,6 @@
|
|||
<!-- Staged Changes -->
|
||||
<v:ChangeCollectionView Grid.Row="1"
|
||||
x:Name="StagedChangesView"
|
||||
Focusable="True"
|
||||
IsUnstagedChange="False"
|
||||
SelectionMode="Multiple"
|
||||
Background="{DynamicResource Brush.Contents}"
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = UnstagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.StageSelected(next);
|
||||
UnstagedChangesView.Focus();
|
||||
UnstagedChangesView.TakeFocus();
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = StagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.UnstageSelected(next);
|
||||
StagedChangesView.Focus();
|
||||
StagedChangesView.TakeFocus();
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = UnstagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.StageSelected(next);
|
||||
UnstagedChangesView.Focus();
|
||||
UnstagedChangesView.TakeFocus();
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = StagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.UnstageSelected(next);
|
||||
StagedChangesView.Focus();
|
||||
StagedChangesView.TakeFocus();
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = UnstagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.StageSelected(next);
|
||||
UnstagedChangesView.Focus();
|
||||
UnstagedChangesView.TakeFocus();
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
|
@ -117,7 +117,7 @@ namespace SourceGit.Views
|
|||
{
|
||||
var next = StagedChangesView.GetNextChangeWithoutSelection();
|
||||
vm.UnstageSelected(next);
|
||||
StagedChangesView.Focus();
|
||||
StagedChangesView.TakeFocus();
|
||||
}
|
||||
|
||||
e.Handled = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue