Skip to content

Commit 3295e51

Browse files
committed
Make extension respect the window.openFoldersInNewWindow setting. Fixes microsoft#85851
1 parent 8839651 commit 3295e51

4 files changed

Lines changed: 5 additions & 8 deletions

File tree

src/vs/platform/electron/electron-main/electronMainService.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export class ElectronMainService implements IElectronMainService {
9999
cli: this.environmentService.args,
100100
forceNewWindow: options.forceNewWindow,
101101
forceReuseWindow: options.forceReuseWindow,
102+
preferNewWindow: options.preferNewWindow,
102103
diffMode: options.diffMode,
103104
addMode: options.addMode,
104105
gotoLineMode: options.gotoLineMode,

src/vs/platform/windows/common/windows.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export interface IBaseOpenWindowsOptions {
2525

2626
export interface IOpenWindowOptions extends IBaseOpenWindowsOptions {
2727
forceNewWindow?: boolean;
28+
preferNewWindow?: boolean;
2829

2930
noRecentEntry?: boolean;
3031
}

src/vs/workbench/api/node/extHostCLIServer.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ export class CLIServer {
101101
for (const s of folderURIs) {
102102
try {
103103
urisToOpen.push({ folderUri: URI.parse(s) });
104-
if (!addMode && !forceReuseWindow) {
105-
forceNewWindow = true;
106-
}
107104
} catch (e) {
108105
// ignore
109106
}
@@ -114,9 +111,6 @@ export class CLIServer {
114111
try {
115112
if (hasWorkspaceFileExtension(s)) {
116113
urisToOpen.push({ workspaceUri: URI.parse(s) });
117-
if (!forceReuseWindow) {
118-
forceNewWindow = true;
119-
}
120114
} else {
121115
urisToOpen.push({ fileUri: URI.parse(s) });
122116
}
@@ -127,7 +121,8 @@ export class CLIServer {
127121
}
128122
if (urisToOpen.length) {
129123
const waitMarkerFileURI = waitMarkerFilePath ? URI.file(waitMarkerFilePath) : undefined;
130-
const windowOpenArgs: INativeOpenWindowOptions = { forceNewWindow, diffMode, addMode, gotoLineMode, forceReuseWindow, waitMarkerFileURI };
124+
const preferNewWindow = !forceReuseWindow && !waitMarkerFileURI && !addMode;
125+
const windowOpenArgs: INativeOpenWindowOptions = { forceNewWindow, diffMode, addMode, gotoLineMode, forceReuseWindow, preferNewWindow, waitMarkerFileURI };
131126
this._commands.executeCommand('_files.windowOpen', urisToOpen, windowOpenArgs);
132127
}
133128
res.writeHead(200);

src/vs/workbench/services/host/browser/browserHostService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export class BrowserHostService extends Disposable implements IHostService {
146146
const windowConfig = this.configurationService.getValue<IWindowSettings>('window');
147147
const openFolderInNewWindowConfig = windowConfig?.openFoldersInNewWindow || 'default' /* default */;
148148

149-
let openFolderInNewWindow = !!options.forceNewWindow && !options.forceReuseWindow;
149+
let openFolderInNewWindow = (options.preferNewWindow || !!options.forceNewWindow) && !options.forceReuseWindow;
150150
if (!options.forceNewWindow && !options.forceReuseWindow && (openFolderInNewWindowConfig === 'on' || openFolderInNewWindowConfig === 'off')) {
151151
openFolderInNewWindow = (openFolderInNewWindowConfig === 'on');
152152
}

0 commit comments

Comments
 (0)