@@ -75,15 +75,14 @@ protected override void OnKeyDown(KeyEventArgs e)
75
75
}
76
76
else if ( e . KeyModifiers . HasFlag ( OperatingSystem . IsMacOS ( ) ? KeyModifiers . Meta : KeyModifiers . Control ) && items . Count == 1 )
77
77
{
78
- var item = items [ 0 ] ;
79
78
if ( e . Key == Key . Up )
80
79
{
81
- vm . MoveItemUp ( item ) ;
80
+ vm . MoveItemUp ( items [ 0 ] ) ;
82
81
e . Handled = true ;
83
82
}
84
83
else if ( e . Key == Key . Down )
85
84
{
86
- vm . MoveItemDown ( item ) ;
85
+ vm . MoveItemDown ( items [ 0 ] ) ;
87
86
e . Handled = true ;
88
87
}
89
88
}
@@ -99,6 +98,7 @@ public InteractiveRebase()
99
98
{
100
99
CloseOnESC = true ;
101
100
InitializeComponent ( ) ;
101
+ IRItemListBox ? . Focus ( ) ;
102
102
}
103
103
104
104
public void OpenCommitMessageEditor ( ViewModels . InteractiveRebaseItem item )
@@ -108,29 +108,21 @@ public void OpenCommitMessageEditor(ViewModels.InteractiveRebaseItem item)
108
108
dialog . ShowDialog ( this ) ;
109
109
}
110
110
111
- protected override void OnLoaded ( RoutedEventArgs e )
112
- {
113
- base . OnLoaded ( e ) ;
114
-
115
- var list = this . FindDescendantOfType < InteractiveRebaseListBox > ( ) ;
116
- list ? . Focus ( ) ;
117
- }
118
-
119
111
private void CloseWindow ( object _1 , RoutedEventArgs _2 )
120
112
{
121
113
Close ( ) ;
122
114
}
123
115
124
- private void OnRowsSelectionChanged ( object sender , SelectionChangedEventArgs e )
116
+ private void OnRowsSelectionChanged ( object _ , SelectionChangedEventArgs e )
125
117
{
126
- if ( DataContext is not ViewModels . InteractiveRebase vm || sender is not InteractiveRebaseListBox listBox )
118
+ if ( DataContext is not ViewModels . InteractiveRebase vm )
127
119
return ;
128
120
129
121
var isFirstTimeHere = ! _firstSelectionChangedHandled ;
130
122
if ( isFirstTimeHere )
131
123
_firstSelectionChangedHandled = true ;
132
124
133
- var selected = listBox . SelectedItems ?? new List < object > ( ) ;
125
+ var selected = IRItemListBox . SelectedItems ?? new List < object > ( ) ;
134
126
var items = new List < ViewModels . InteractiveRebaseItem > ( ) ;
135
127
foreach ( var item in selected )
136
128
{
@@ -270,20 +262,34 @@ private void CreateActionMenuItem(MenuFlyout flyout, ViewModels.InteractiveRebas
270
262
menuItem . Icon = new Ellipse ( ) { Width = 14 , Height = 14 , Fill = iconBrush } ;
271
263
menuItem . Header = header ;
272
264
menuItem . Tag = hotkey ;
273
- menuItem . Click += ( _ , e ) =>
265
+ menuItem . Click += ( _ , __ ) => ChangeItemsAction ( item , action ) ;
266
+
267
+ flyout . Items . Add ( menuItem ) ;
268
+ }
269
+
270
+ private void ChangeItemsAction ( ViewModels . InteractiveRebaseItem target , Models . InteractiveRebaseAction action )
271
+ {
272
+ if ( DataContext is not ViewModels . InteractiveRebase vm )
273
+ return ;
274
+
275
+ var selected = IRItemListBox . SelectedItems ?? new List < object > ( ) ;
276
+ var items = new List < ViewModels . InteractiveRebaseItem > ( ) ;
277
+ foreach ( var item in selected )
274
278
{
275
- if ( DataContext is ViewModels . InteractiveRebase vm )
276
- {
277
- vm . ChangeAction ( [ item ] , action ) ;
279
+ if ( item is ViewModels . InteractiveRebaseItem rebaseItem )
280
+ items . Add ( rebaseItem ) ;
281
+ }
278
282
279
- if ( action == Models . InteractiveRebaseAction . Reword )
280
- OpenCommitMessageEditor ( item ) ;
281
- }
283
+ if ( ! items . Contains ( target ) )
284
+ {
285
+ items . Clear ( ) ;
286
+ items . Add ( target ) ;
287
+ }
282
288
283
- e . Handled = true ;
284
- } ;
289
+ vm . ChangeAction ( items , action ) ;
285
290
286
- flyout . Items . Add ( menuItem ) ;
291
+ if ( items . Count == 1 && action == Models . InteractiveRebaseAction . Reword )
292
+ OpenCommitMessageEditor ( items [ 0 ] ) ;
287
293
}
288
294
289
295
private bool _firstSelectionChangedHandled = false ;
0 commit comments