@@ -91,19 +91,39 @@ export async function openEditorWith(
91
91
picker . selectedItems = [ items [ 0 ] ] ;
92
92
}
93
93
picker . placeholder = nls . localize ( 'promptOpenWith.placeHolder' , "Select editor for '{0}'" , basename ( originalResource ) ) ;
94
+ picker . canAcceptInBackground = true ;
94
95
95
96
type PickedResult = {
96
97
readonly item : QuickPickItem ;
97
98
readonly keyMods ?: IKeyMods ;
99
+ readonly openInBackground : boolean ;
98
100
} ;
99
101
102
+ function openEditor ( picked : PickedResult ) {
103
+ const targetGroup = getTargetGroup ( group , picked . keyMods , configurationService , editorGroupsService ) ;
104
+
105
+ const openOptions : IEditorOptions = {
106
+ ...options ,
107
+ override : picked . item . id ,
108
+ preserveFocus : picked . openInBackground || options ?. preserveFocus ,
109
+ } ;
110
+ return picked . item . handler . open ( input , openOptions , targetGroup , OpenEditorContext . NEW_EDITOR ) ?. override ;
111
+ }
112
+
100
113
const picked = await new Promise < PickedResult | undefined > ( resolve => {
101
- picker . onDidAccept ( ( ) => {
114
+ picker . onDidAccept ( e => {
102
115
if ( picker . selectedItems . length === 1 ) {
103
- resolve ( {
116
+ const result : PickedResult = {
104
117
item : picker . selectedItems [ 0 ] ,
105
- keyMods : picker . keyMods
106
- } ) ;
118
+ keyMods : picker . keyMods ,
119
+ openInBackground : e . inBackground
120
+ } ;
121
+
122
+ if ( e . inBackground ) {
123
+ openEditor ( result ) ;
124
+ } else {
125
+ resolve ( result ) ;
126
+ }
107
127
} else {
108
128
resolve ( undefined ) ;
109
129
}
@@ -112,7 +132,7 @@ export async function openEditorWith(
112
132
picker . onDidTriggerItemButton ( e => {
113
133
const pick = e . item ;
114
134
const id = pick . id ;
115
- resolve ( { item : pick } ) ; // open the view
135
+ resolve ( { item : pick , openInBackground : false } ) ; // open the view
116
136
picker . dispose ( ) ;
117
137
118
138
// And persist the setting
@@ -143,13 +163,7 @@ export async function openEditorWith(
143
163
return undefined ;
144
164
}
145
165
146
- const targetGroup = getTargetGroup ( group , picked . keyMods , configurationService , editorGroupsService ) ;
147
-
148
- const openOptions : IEditorOptions = {
149
- ...options ,
150
- override : picked . item . id ,
151
- } ;
152
- return picked . item . handler . open ( input , openOptions , targetGroup , OpenEditorContext . NEW_EDITOR ) ?. override ;
166
+ return openEditor ( picked ) ;
153
167
}
154
168
155
169
const builtinProviderDisplayName = nls . localize ( 'builtinProviderDisplayName' , "Built-in" ) ;
0 commit comments