@@ -146,13 +146,16 @@ interface ResourceTemplate {
146
146
disposables : IDisposable ;
147
147
}
148
148
149
- class MultipleSelectionActionRunner extends ActionRunner {
149
+ class RepositoryPaneActionRunner extends ActionRunner {
150
150
151
- constructor ( private getSelectedResources : ( ) => ( ISCMResource | IResourceNode < ISCMResource , ISCMResourceGroup > ) [ ] ) {
151
+ constructor (
152
+ private getSelectedResources : ( ) => ( ISCMResource | IResourceNode < ISCMResource , ISCMResourceGroup > ) [ ] ,
153
+ private focus : ( ) => void
154
+ ) {
152
155
super ( ) ;
153
156
}
154
157
155
- runAction ( action : IAction , context : ISCMResource | IResourceNode < ISCMResource , ISCMResourceGroup > ) : Promise < any > {
158
+ async runAction ( action : IAction , context : ISCMResource | IResourceNode < ISCMResource , ISCMResourceGroup > ) : Promise < any > {
156
159
if ( ! ( action instanceof MenuItemAction ) ) {
157
160
return super . runAction ( action , context ) ;
158
161
}
@@ -161,7 +164,8 @@ class MultipleSelectionActionRunner extends ActionRunner {
161
164
const contextIsSelected = selection . some ( s => s === context ) ;
162
165
const actualContext = contextIsSelected ? selection : [ context ] ;
163
166
const args = flatten ( actualContext . map ( e => ResourceTree . isResourceNode ( e ) ? ResourceTree . collect ( e ) : [ e ] ) ) ;
164
- return action . run ( ...args ) ;
167
+ await action . run ( ...args ) ;
168
+ this . focus ( ) ;
165
169
}
166
170
}
167
171
@@ -175,6 +179,7 @@ class ResourceRenderer implements ICompressibleTreeRenderer<ISCMResource | IReso
175
179
private labels : ResourceLabels ,
176
180
private actionViewItemProvider : IActionViewItemProvider ,
177
181
private getSelectedResources : ( ) => ( ISCMResource | IResourceNode < ISCMResource , ISCMResourceGroup > ) [ ] ,
182
+ private focus : ( ) => void ,
178
183
private themeService : IThemeService ,
179
184
private menus : SCMMenus
180
185
) { }
@@ -186,7 +191,7 @@ class ResourceRenderer implements ICompressibleTreeRenderer<ISCMResource | IReso
186
191
const actionsContainer = append ( fileLabel . element , $ ( '.actions' ) ) ;
187
192
const actionBar = new ActionBar ( actionsContainer , {
188
193
actionViewItemProvider : this . actionViewItemProvider ,
189
- actionRunner : new MultipleSelectionActionRunner ( this . getSelectedResources )
194
+ actionRunner : new RepositoryPaneActionRunner ( this . getSelectedResources , this . focus )
190
195
} ) ;
191
196
192
197
const decorationIcon = append ( element , $ ( '.decoration-icon' ) ) ;
@@ -820,7 +825,7 @@ export class RepositoryPane extends ViewPane {
820
825
821
826
const renderers = [
822
827
new ResourceGroupRenderer ( actionViewItemProvider , this . themeService , this . menus ) ,
823
- new ResourceRenderer ( ( ) => this . viewModel , this . listLabels , actionViewItemProvider , ( ) => this . getSelectedResources ( ) , this . themeService , this . menus )
828
+ new ResourceRenderer ( ( ) => this . viewModel , this . listLabels , actionViewItemProvider , ( ) => this . getSelectedResources ( ) , ( ) => this . tree . domFocus ( ) , this . themeService , this . menus )
824
829
] ;
825
830
826
831
const filter = new SCMTreeFilter ( ) ;
@@ -1024,7 +1029,7 @@ export class RepositoryPane extends ViewPane {
1024
1029
getAnchor : ( ) => e . anchor ,
1025
1030
getActions : ( ) => actions ,
1026
1031
getActionsContext : ( ) => element ,
1027
- actionRunner : new MultipleSelectionActionRunner ( ( ) => this . getSelectedResources ( ) )
1032
+ actionRunner : new RepositoryPaneActionRunner ( ( ) => this . getSelectedResources ( ) , ( ) => this . tree . domFocus ( ) )
1028
1033
} ) ;
1029
1034
}
1030
1035
0 commit comments