提交 7b81b55c 编写于 作者: B Benjamin Pasero

distinguish between forceNewWindow and preferNewWindow

上级 dd7709ec
...@@ -37,7 +37,7 @@ export class LaunchService { ...@@ -37,7 +37,7 @@ export class LaunchService {
} else if (args.pathArguments.length === 0) { } else if (args.pathArguments.length === 0) {
windows.manager.focusLastActive(args); windows.manager.focusLastActive(args);
} else { } 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 // 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 // is being used and kill the other instance when that window is being closed
...@@ -189,7 +189,7 @@ function main(ipcServer: Server, userEnv: env.IProcessEnvironment): void { ...@@ -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)) { } 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 windows.manager.open({ cli: env.cliArgs, pathsToOpen: global.macOpenFiles }); // mac: open-file event received on startup
} else { } 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
} }
} }
......
...@@ -59,6 +59,7 @@ export interface IOpenConfiguration { ...@@ -59,6 +59,7 @@ export interface IOpenConfiguration {
cli: env.ICommandLineArguments; cli: env.ICommandLineArguments;
userEnv?: env.IProcessEnvironment; userEnv?: env.IProcessEnvironment;
pathsToOpen?: string[]; pathsToOpen?: string[];
preferNewWindow?: boolean;
forceNewWindow?: boolean; forceNewWindow?: boolean;
forceEmpty?: boolean; forceEmpty?: boolean;
windowToUse?: window.VSCodeWindow; windowToUse?: window.VSCodeWindow;
...@@ -137,7 +138,7 @@ export class WindowsManager { ...@@ -137,7 +138,7 @@ export class WindowsManager {
// Handle paths delayed in case more are coming! // Handle paths delayed in case more are coming!
runningTimeout = setTimeout(() => { 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 = []; macOpenFiles = [];
runningTimeout = null; runningTimeout = null;
}, 100); }, 100);
...@@ -498,10 +499,15 @@ export class WindowsManager { ...@@ -498,10 +499,15 @@ export class WindowsManager {
// Handle files to open/diff or to create when we dont open a folder // 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)) { 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 the user settings override how files are open in a new window or same window unless we are forced
let openFilesInNewWindow = openConfig.forceNewWindow; let openFilesInNewWindow: boolean;
if (openFilesInNewWindow && !openConfig.cli.extensionDevelopmentPath) { // can be overriden via settings (not for PDE though!) if (openConfig.forceNewWindow) {
openFilesInNewWindow = settings.manager.getValue('window.openFilesInNewWindow', openFilesInNewWindow); 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 // Open Files in last instance if any and flag tells us so
......
...@@ -39,7 +39,7 @@ class OpenSnippetsAction extends actions.Action { ...@@ -39,7 +39,7 @@ class OpenSnippetsAction extends actions.Action {
} }
private openFile(filePath: string): void { 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 { public run(): winjs.Promise {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册