diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 1e2de12ca67..58be55593cd 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -115,6 +115,7 @@ import { IInitialProtocolUrls, IProtocolUrl } from 'vs/platform/url/electron-mai import { massageMessageBoxOptions } from 'vs/platform/dialogs/common/dialogs'; import { IUtilityProcessWorkerMainService, UtilityProcessWorkerMainService } from 'vs/platform/utilityProcess/electron-main/utilityProcessWorkerMainService'; import { ipcUtilityProcessWorkerChannelName } from 'vs/platform/utilityProcess/common/utilityProcessWorkerService'; +import { firstOrDefault } from 'vs/base/common/arrays'; /** * The main VS Code application. There will only ever be one instance, @@ -785,16 +786,16 @@ export class CodeApplication extends Disposable { if (windowOpenableFromProtocolUrl) { this.logService.trace('app#handleProtocolUrl() opening protocol url as window:', windowOpenableFromProtocolUrl, uri.toString(true)); - const [window] = await windowsMainService.open({ + const window = firstOrDefault(await windowsMainService.open({ context: OpenContext.API, cli: { ...this.environmentMainService.args }, urisToOpen: [windowOpenableFromProtocolUrl], forceNewWindow: shouldOpenInNewWindow, gotoLineMode: true // remoteAuthority: will be determined based on windowOpenableFromProtocolUrl - }); + })); - window.focus(); // this should help ensuring that the right window gets focus when multiple are opened + window?.focus(); // this should help ensuring that the right window gets focus when multiple are opened return true; } @@ -803,16 +804,16 @@ export class CodeApplication extends Disposable { if (shouldOpenInNewWindow) { this.logService.trace('app#handleProtocolUrl() opening empty window and passing in protocol url:', uri.toString(true)); - const [window] = await windowsMainService.open({ + const window = firstOrDefault(await windowsMainService.open({ context: OpenContext.API, cli: { ...this.environmentMainService.args }, forceNewWindow: true, forceEmpty: true, gotoLineMode: true, remoteAuthority: getRemoteAuthority(uri) - }); + })); - await window.ready(); + await window?.ready(); return urlService.open(uri, options); } diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 4af29bb8635..e4c28d41a84 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -50,6 +50,7 @@ import { resolveCommonProperties } from 'vs/platform/telemetry/common/commonProp import { hostname, release } from 'os'; import { resolveMachineId } from 'vs/platform/telemetry/electron-main/telemetryUtils'; import { ILoggerMainService } from 'vs/platform/log/electron-main/loggerService'; +import { firstOrDefault } from 'vs/base/common/arrays'; export interface IWindowCreationOptions { readonly state: IWindowState; @@ -881,7 +882,7 @@ export class CodeWindow extends Disposable implements ICodeWindow { } // Delegate to windows service - const [window] = await this.windowsMainService.open({ + const window = firstOrDefault(await this.windowsMainService.open({ context: OpenContext.API, userEnv: this._config.userEnv, cli: { @@ -892,8 +893,8 @@ export class CodeWindow extends Disposable implements ICodeWindow { forceEmpty, forceNewWindow: true, remoteAuthority: this.remoteAuthority - }); - window.focus(); + })); + window?.focus(); } }