From 779a1d311850025aa503725152a7ab38dad7e450 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 26 Mar 2019 11:35:58 +0100 Subject: [PATCH] dnd does not preserve authority --- src/vs/workbench/browser/dnd.ts | 26 +++++-------------- .../browser/nodeless.simpleservices.ts | 2 +- .../workspace/node/workspaceEditingService.ts | 4 +-- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index d48f730b7e3..7b6ad89e25d 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { hasWorkspaceFileExtension, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; +import { hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces'; import { normalize } from 'vs/base/common/path'; import { basename } from 'vs/base/common/resources'; import { IFileService } from 'vs/platform/files/common/files'; @@ -29,6 +29,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { addDisposableListener, EventType } from 'vs/base/browser/dom'; import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IRecentFile } from 'vs/platform/history/common/history'; +import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing'; export interface IDraggedResource { resource: URI; @@ -154,12 +155,12 @@ export class ResourcesDropHandler { @IFileService private readonly fileService: IFileService, @IWindowsService private readonly windowsService: IWindowsService, @IWindowService private readonly windowService: IWindowService, - @IWorkspacesService private readonly workspacesService: IWorkspacesService, @ITextFileService private readonly textFileService: ITextFileService, @IBackupFileService private readonly backupFileService: IBackupFileService, @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, @IEditorService private readonly editorService: IEditorService, - @IConfigurationService private readonly configurationService: IConfigurationService + @IConfigurationService private readonly configurationService: IConfigurationService, + @IWorkspaceEditingService private readonly workspaceEditingService: IWorkspaceEditingService ) { } @@ -284,26 +285,13 @@ export class ResourcesDropHandler { // Pass focus to window this.windowService.focusWindow(); - let workspacesToOpen: Promise | undefined; - // Open in separate windows if we drop workspaces or just one folder if (workspaces.length > 0 || folders.length === 1) { - workspacesToOpen = Promise.resolve([...workspaces, ...folders]); - } - - // Multiple folders: Create new workspace with folders and open - else if (folders.length > 1) { - workspacesToOpen = this.workspacesService.createUntitledWorkspace(folders).then(workspace => [{ uri: workspace.configPath, typeHint: 'file' }]); - } - - // Open - if (workspacesToOpen) { - workspacesToOpen.then(workspaces => { - this.windowService.openWindow(workspaces, { forceReuseWindow: true }); - }); + return this.windowService.openWindow([...workspaces, ...folders], { forceReuseWindow: true }).then(_ => true); } - return true; + // folders.length > 1: Multiple folders: Create new workspace with folders and open + return this.workspaceEditingService.createAndEnterWorkspace(folders).then(_ => true); }); } } diff --git a/src/vs/workbench/browser/nodeless.simpleservices.ts b/src/vs/workbench/browser/nodeless.simpleservices.ts index fd30ae6037b..ae4c9ff8ffc 100644 --- a/src/vs/workbench/browser/nodeless.simpleservices.ts +++ b/src/vs/workbench/browser/nodeless.simpleservices.ts @@ -1810,7 +1810,7 @@ export class SimpleWorkspacesService implements IWorkspacesService { _serviceBrand: any; - createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[]): Promise { + createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[], remoteAuthority?: string): Promise { // @ts-ignore return Promise.resolve(undefined); } diff --git a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts index ec5cc2da056..731c62df5a7 100644 --- a/src/vs/workbench/services/workspace/node/workspaceEditingService.ts +++ b/src/vs/workbench/services/workspace/node/workspaceEditingService.ts @@ -245,8 +245,8 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { if (path && !this.isValidTargetWorkspacePath(path)) { return Promise.reject(null); } - - const untitledWorkspace = await this.workspaceService.createUntitledWorkspace(folders); + const remoteAuthority = this.windowService.getConfiguration().remoteAuthority; + const untitledWorkspace = await this.workspaceService.createUntitledWorkspace(folders, remoteAuthority); if (path) { await this.saveWorkspaceAs(untitledWorkspace, path); } else { -- GitLab