提交 779a1d31 编写于 作者: M Martin Aeschlimann

dnd does not preserve authority

上级 e2183c19
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * 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 { normalize } from 'vs/base/common/path';
import { basename } from 'vs/base/common/resources'; import { basename } from 'vs/base/common/resources';
import { IFileService } from 'vs/platform/files/common/files'; import { IFileService } from 'vs/platform/files/common/files';
...@@ -29,6 +29,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; ...@@ -29,6 +29,7 @@ import { Disposable } from 'vs/base/common/lifecycle';
import { addDisposableListener, EventType } from 'vs/base/browser/dom'; import { addDisposableListener, EventType } from 'vs/base/browser/dom';
import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService';
import { IRecentFile } from 'vs/platform/history/common/history'; import { IRecentFile } from 'vs/platform/history/common/history';
import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing';
export interface IDraggedResource { export interface IDraggedResource {
resource: URI; resource: URI;
...@@ -154,12 +155,12 @@ export class ResourcesDropHandler { ...@@ -154,12 +155,12 @@ export class ResourcesDropHandler {
@IFileService private readonly fileService: IFileService, @IFileService private readonly fileService: IFileService,
@IWindowsService private readonly windowsService: IWindowsService, @IWindowsService private readonly windowsService: IWindowsService,
@IWindowService private readonly windowService: IWindowService, @IWindowService private readonly windowService: IWindowService,
@IWorkspacesService private readonly workspacesService: IWorkspacesService,
@ITextFileService private readonly textFileService: ITextFileService, @ITextFileService private readonly textFileService: ITextFileService,
@IBackupFileService private readonly backupFileService: IBackupFileService, @IBackupFileService private readonly backupFileService: IBackupFileService,
@IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService,
@IEditorService private readonly editorService: IEditorService, @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 { ...@@ -284,26 +285,13 @@ export class ResourcesDropHandler {
// Pass focus to window // Pass focus to window
this.windowService.focusWindow(); this.windowService.focusWindow();
let workspacesToOpen: Promise<IURIToOpen[]> | undefined;
// Open in separate windows if we drop workspaces or just one folder // Open in separate windows if we drop workspaces or just one folder
if (workspaces.length > 0 || folders.length === 1) { if (workspaces.length > 0 || folders.length === 1) {
workspacesToOpen = Promise.resolve([...workspaces, ...folders]); return this.windowService.openWindow([...workspaces, ...folders], { forceReuseWindow: true }).then(_ => true);
}
// Multiple folders: Create new workspace with folders and open
else if (folders.length > 1) {
workspacesToOpen = this.workspacesService.createUntitledWorkspace(folders).then(workspace => [<IURIToOpen>{ uri: workspace.configPath, typeHint: 'file' }]);
}
// Open
if (workspacesToOpen) {
workspacesToOpen.then(workspaces => {
this.windowService.openWindow(workspaces, { forceReuseWindow: true });
});
} }
return true; // folders.length > 1: Multiple folders: Create new workspace with folders and open
return this.workspaceEditingService.createAndEnterWorkspace(folders).then(_ => true);
}); });
} }
} }
......
...@@ -1810,7 +1810,7 @@ export class SimpleWorkspacesService implements IWorkspacesService { ...@@ -1810,7 +1810,7 @@ export class SimpleWorkspacesService implements IWorkspacesService {
_serviceBrand: any; _serviceBrand: any;
createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[]): Promise<IWorkspaceIdentifier> { createUntitledWorkspace(folders?: IWorkspaceFolderCreationData[], remoteAuthority?: string): Promise<IWorkspaceIdentifier> {
// @ts-ignore // @ts-ignore
return Promise.resolve(undefined); return Promise.resolve(undefined);
} }
......
...@@ -245,8 +245,8 @@ export class WorkspaceEditingService implements IWorkspaceEditingService { ...@@ -245,8 +245,8 @@ export class WorkspaceEditingService implements IWorkspaceEditingService {
if (path && !this.isValidTargetWorkspacePath(path)) { if (path && !this.isValidTargetWorkspacePath(path)) {
return Promise.reject(null); return Promise.reject(null);
} }
const remoteAuthority = this.windowService.getConfiguration().remoteAuthority;
const untitledWorkspace = await this.workspaceService.createUntitledWorkspace(folders); const untitledWorkspace = await this.workspaceService.createUntitledWorkspace(folders, remoteAuthority);
if (path) { if (path) {
await this.saveWorkspaceAs(untitledWorkspace, path); await this.saveWorkspaceAs(untitledWorkspace, path);
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册