From 1ee90dc8d2a46acb3a6041c677fd7f49e2b48359 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 19 Jul 2018 12:55:30 +0200 Subject: [PATCH] Fix findWindowOnWorkspaceOrFolderUri to accept URI and adopt --- src/vs/code/electron-main/windows.ts | 11 +++++++++-- src/vs/code/node/windowsFinder.ts | 6 +++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 2cc708de104..0849d940fa8 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -20,7 +20,7 @@ import { ILifecycleService, UnloadReason, IWindowUnloadEvent } from 'vs/platform import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ILogService } from 'vs/platform/log/common/log'; import { IWindowSettings, OpenContext, IPath, IWindowConfiguration, INativeOpenDialogOptions, ReadyState, IPathsToWaitFor, IEnterWorkspaceResult, IMessageBoxResult } from 'vs/platform/windows/common/windows'; -import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderPath } from 'vs/code/node/windowsFinder'; +import { getLastActiveWindow, findBestWindowOrFolderForFile, findWindowOnWorkspace, findWindowOnExtensionDevelopmentPath, findWindowOnWorkspaceOrFolderUri } from 'vs/code/node/windowsFinder'; import { Event as CommonEvent, Emitter } from 'vs/base/common/event'; import product from 'vs/platform/node/product'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -1104,9 +1104,16 @@ export class WindowsManager implements IWindowsMainService { } // Make sure we are not asked to open a workspace or folder that is already opened - if (openConfig.cli._.some(path => !!findWindowOnWorkspaceOrFolderPath(WindowsManager.WINDOWS, path))) { + if (openConfig.cli._.some(path => !!findWindowOnWorkspaceOrFolderUri(WindowsManager.WINDOWS, URI.file(path)))) { openConfig.cli._ = []; } + if (openConfig.cli['folder-uri']) { + const arg = openConfig.cli['folder-uri']; + const folderUris: string[] = typeof arg === 'string' ? [arg] : arg; + if (folderUris.some(uri => !!findWindowOnWorkspaceOrFolderUri(WindowsManager.WINDOWS, URI.parse(uri)))) { + openConfig.cli['folder-uri'] = []; + } + } // Open it this.open({ context: openConfig.context, cli: openConfig.cli, forceNewWindow: true, forceEmpty: openConfig.cli._.length === 0, userEnv: openConfig.userEnv }); diff --git a/src/vs/code/node/windowsFinder.ts b/src/vs/code/node/windowsFinder.ts index 99219a37f2f..cd9bca97297 100644 --- a/src/vs/code/node/windowsFinder.ts +++ b/src/vs/code/node/windowsFinder.ts @@ -103,16 +103,16 @@ export function findWindowOnExtensionDevelopmentPath(wi })[0]; } -export function findWindowOnWorkspaceOrFolderPath(windows: W[], path: string): W { +export function findWindowOnWorkspaceOrFolderUri(windows: W[], uri: URI): W { return windows.filter(window => { // check for workspace config path - if (window.openedWorkspace && paths.isEqual(window.openedWorkspace.configPath, path, !platform.isLinux /* ignorecase */)) { + if (window.openedWorkspace && isEqual(URI.file(window.openedWorkspace.configPath), uri, !platform.isLinux /* ignorecase */)) { return true; } // check for folder path - if (window.openedFolderUri && window.openedFolderUri.scheme === Schemas.file && paths.isEqual(window.openedFolderUri.fsPath, path, !platform.isLinux /* ignorecase */)) { + if (window.openedFolderUri && isEqual(window.openedFolderUri, uri, hasToIgnoreCase(uri))) { return true; } -- GitLab