@@ -75,15 +75,14 @@ protected override void OnKeyDown(KeyEventArgs e)
7575 }
7676 else if ( e . KeyModifiers . HasFlag ( OperatingSystem . IsMacOS ( ) ? KeyModifiers . Meta : KeyModifiers . Control ) && items . Count == 1 )
7777 {
78- var item = items [ 0 ] ;
7978 if ( e . Key == Key . Up )
8079 {
81- vm . MoveItemUp ( item ) ;
80+ vm . MoveItemUp ( items [ 0 ] ) ;
8281 e . Handled = true ;
8382 }
8483 else if ( e . Key == Key . Down )
8584 {
86- vm . MoveItemDown ( item ) ;
85+ vm . MoveItemDown ( items [ 0 ] ) ;
8786 e . Handled = true ;
8887 }
8988 }
@@ -99,6 +98,7 @@ public InteractiveRebase()
9998 {
10099 CloseOnESC = true ;
101100 InitializeComponent ( ) ;
101+ IRItemListBox ? . Focus ( ) ;
102102 }
103103
104104 public void OpenCommitMessageEditor ( ViewModels . InteractiveRebaseItem item )
@@ -108,29 +108,21 @@ public void OpenCommitMessageEditor(ViewModels.InteractiveRebaseItem item)
108108 dialog . ShowDialog ( this ) ;
109109 }
110110
111- protected override void OnLoaded ( RoutedEventArgs e )
112- {
113- base . OnLoaded ( e ) ;
114-
115- var list = this . FindDescendantOfType < InteractiveRebaseListBox > ( ) ;
116- list ? . Focus ( ) ;
117- }
118-
119111 private void CloseWindow ( object _1 , RoutedEventArgs _2 )
120112 {
121113 Close ( ) ;
122114 }
123115
124- private void OnRowsSelectionChanged ( object sender , SelectionChangedEventArgs e )
116+ private void OnRowsSelectionChanged ( object _ , SelectionChangedEventArgs e )
125117 {
126- if ( DataContext is not ViewModels . InteractiveRebase vm || sender is not InteractiveRebaseListBox listBox )
118+ if ( DataContext is not ViewModels . InteractiveRebase vm )
127119 return ;
128120
129121 var isFirstTimeHere = ! _firstSelectionChangedHandled ;
130122 if ( isFirstTimeHere )
131123 _firstSelectionChangedHandled = true ;
132124
133- var selected = listBox . SelectedItems ?? new List < object > ( ) ;
125+ var selected = IRItemListBox . SelectedItems ?? new List < object > ( ) ;
134126 var items = new List < ViewModels . InteractiveRebaseItem > ( ) ;
135127 foreach ( var item in selected )
136128 {
@@ -270,20 +262,34 @@ private void CreateActionMenuItem(MenuFlyout flyout, ViewModels.InteractiveRebas
270262 menuItem . Icon = new Ellipse ( ) { Width = 14 , Height = 14 , Fill = iconBrush } ;
271263 menuItem . Header = header ;
272264 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 )
274278 {
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+ }
278282
279- if ( action == Models . InteractiveRebaseAction . Reword )
280- OpenCommitMessageEditor ( item ) ;
281- }
283+ if ( ! items . Contains ( target ) )
284+ {
285+ items . Clear ( ) ;
286+ items . Add ( target ) ;
287+ }
282288
283- e . Handled = true ;
284- } ;
289+ vm . ChangeAction ( items , action ) ;
285290
286- flyout . Items . Add ( menuItem ) ;
291+ if ( items . Count == 1 && action == Models . InteractiveRebaseAction . Reword )
292+ OpenCommitMessageEditor ( items [ 0 ] ) ;
287293 }
288294
289295 private bool _firstSelectionChangedHandled = false ;
0 commit comments