Skip to content

Commit

Permalink
distinguish between forceNewWindow and preferNewWindow
Browse files Browse the repository at this point in the history
  • Loading branch information
bpasero committed Mar 11, 2016
1 parent dd7709e commit 7b81b55
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/vs/workbench/electron-main/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export class LaunchService {
} else if (args.pathArguments.length === 0) {
windows.manager.focusLastActive(args);
} else {
let usedWindows = windows.manager.open({ cli: args, userEnv: userEnv, forceNewWindow: args.waitForWindowClose || !args.openInSameWindow });
let usedWindows = windows.manager.open({ cli: args, userEnv: userEnv, forceNewWindow: args.waitForWindowClose, preferNewWindow: !args.openInSameWindow });

// If the other instance is waiting to be killed, we hook up a window listener if one window
// is being used and kill the other instance when that window is being closed
Expand Down Expand Up @@ -189,7 +189,7 @@ function main(ipcServer: Server, userEnv: env.IProcessEnvironment): void {
} else if (global.macOpenFiles && global.macOpenFiles.length && (!env.cliArgs.pathArguments || !env.cliArgs.pathArguments.length)) {
windows.manager.open({ cli: env.cliArgs, pathsToOpen: global.macOpenFiles }); // mac: open-file event received on startup
} else {
windows.manager.open({ cli: env.cliArgs, forceNewWindow: env.cliArgs.openNewWindow }); // default: read paths from cli
windows.manager.open({ cli: env.cliArgs, preferNewWindow: env.cliArgs.openNewWindow }); // default: read paths from cli
}
}

Expand Down
16 changes: 11 additions & 5 deletions src/vs/workbench/electron-main/windows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ export interface IOpenConfiguration {
cli: env.ICommandLineArguments;
userEnv?: env.IProcessEnvironment;
pathsToOpen?: string[];
preferNewWindow?: boolean;
forceNewWindow?: boolean;
forceEmpty?: boolean;
windowToUse?: window.VSCodeWindow;
Expand Down Expand Up @@ -137,7 +138,7 @@ export class WindowsManager {

// Handle paths delayed in case more are coming!
runningTimeout = setTimeout(() => {
this.open({ cli: env.cliArgs, pathsToOpen: macOpenFiles, forceNewWindow: true /* dropping on the dock should force open in a new window */ });
this.open({ cli: env.cliArgs, pathsToOpen: macOpenFiles, preferNewWindow: true /* dropping on the dock prefers to open in a new window */ });
macOpenFiles = [];
runningTimeout = null;
}, 100);
Expand Down Expand Up @@ -498,10 +499,15 @@ export class WindowsManager {
// Handle files to open/diff or to create when we dont open a folder
if (!foldersToOpen.length && (filesToOpen.length > 0 || filesToCreate.length > 0 || filesToDiff.length > 0 || extensionsToInstall.length > 0)) {

// Let the user settings override how files are open in a new window or same window
let openFilesInNewWindow = openConfig.forceNewWindow;
if (openFilesInNewWindow && !openConfig.cli.extensionDevelopmentPath) { // can be overriden via settings (not for PDE though!)
openFilesInNewWindow = settings.manager.getValue('window.openFilesInNewWindow', openFilesInNewWindow);
// Let the user settings override how files are open in a new window or same window unless we are forced
let openFilesInNewWindow: boolean;
if (openConfig.forceNewWindow) {
openFilesInNewWindow = true;
} else {
openFilesInNewWindow = openConfig.preferNewWindow;
if (openFilesInNewWindow && !openConfig.cli.extensionDevelopmentPath) { // can be overriden via settings (not for PDE though!)
openFilesInNewWindow = settings.manager.getValue('window.openFilesInNewWindow', openFilesInNewWindow);
}
}

// Open Files in last instance if any and flag tells us so
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class OpenSnippetsAction extends actions.Action {
}

private openFile(filePath: string): void {
ipc.send('vscode:windowOpen', [filePath], false /* force new window */); // handled from browser process
ipc.send('vscode:windowOpen', [filePath]); // handled from browser process
}

public run(): winjs.Promise {
Expand Down

0 comments on commit 7b81b55

Please sign in to comment.