Skip to content

Commit ca41176

Browse files
author
Benjamin Pasero
committed
Layer breaker: browser/dnd (fixes microsoft#37611)
1 parent 3bdd8b8 commit ca41176

6 files changed

Lines changed: 45 additions & 44 deletions

File tree

src/vs/base/browser/dnd.ts

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
'use strict';
77

88
import { $ } from 'vs/base/browser/builder';
9-
import URI from 'vs/base/common/uri';
109

1110
/**
1211
* A helper that will execute a provided function when the provided HTMLElement receives
@@ -40,42 +39,4 @@ export class DelayedDragHandler {
4039
public dispose(): void {
4140
this.clearDragTimeout();
4241
}
43-
}
44-
45-
export interface IDraggedResource {
46-
resource: URI;
47-
isExternal: boolean;
48-
}
49-
50-
export function extractResources(e: DragEvent, externalOnly?: boolean): IDraggedResource[] {
51-
const resources: IDraggedResource[] = [];
52-
if (e.dataTransfer.types.length > 0) {
53-
54-
// Check for in-app DND
55-
if (!externalOnly) {
56-
const rawData = e.dataTransfer.getData('URL');
57-
if (rawData) {
58-
try {
59-
resources.push({ resource: URI.parse(rawData), isExternal: false });
60-
} catch (error) {
61-
// Invalid URI
62-
}
63-
}
64-
}
65-
66-
// Check for native file transfer
67-
if (e.dataTransfer && e.dataTransfer.files) {
68-
for (let i = 0; i < e.dataTransfer.files.length; i++) {
69-
if (e.dataTransfer.files[i] && e.dataTransfer.files[i].path) {
70-
try {
71-
resources.push({ resource: URI.file(e.dataTransfer.files[i].path), isExternal: true });
72-
} catch (error) {
73-
// Invalid URI
74-
}
75-
}
76-
}
77-
}
78-
}
79-
80-
return resources;
8142
}

src/vs/workbench/browser/editor.ts

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
1111
import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor';
1212
import { IConstructorSignature0, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1313
import { isArray } from 'vs/base/common/types';
14+
import URI from 'vs/base/common/uri';
1415

1516
export interface IEditorDescriptor {
1617
instantiate(instantiationService: IInstantiationService): BaseEditor;
@@ -196,4 +197,43 @@ export const Extensions = {
196197
Editors: 'workbench.contributions.editors'
197198
};
198199

199-
Registry.add(Extensions.Editors, new EditorRegistry());
200+
Registry.add(Extensions.Editors, new EditorRegistry());
201+
202+
export interface IDraggedResource {
203+
resource: URI;
204+
isExternal: boolean;
205+
}
206+
207+
export function extractResources(e: DragEvent, externalOnly?: boolean): IDraggedResource[] {
208+
const resources: IDraggedResource[] = [];
209+
if (e.dataTransfer.types.length > 0) {
210+
211+
// Check for in-app DND
212+
if (!externalOnly) {
213+
const rawData = e.dataTransfer.getData('URL');
214+
if (rawData) {
215+
try {
216+
resources.push({ resource: URI.parse(rawData), isExternal: false });
217+
} catch (error) {
218+
// Invalid URI
219+
}
220+
}
221+
}
222+
223+
// Check for native file transfer
224+
if (e.dataTransfer && e.dataTransfer.files) {
225+
for (let i = 0; i < e.dataTransfer.files.length; i++) {
226+
const file = e.dataTransfer.files[i] as { path: string };
227+
if (file && file.path) {
228+
try {
229+
resources.push({ resource: URI.file(file.path), isExternal: true });
230+
} catch (error) {
231+
// Invalid URI
232+
}
233+
}
234+
}
235+
}
236+
}
237+
238+
return resources;
239+
}

src/vs/workbench/browser/parts/editor/editorGroupsControl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { TabsTitleControl } from 'vs/workbench/browser/parts/editor/tabsTitleCon
3030
import { TitleControl, ITitleAreaControl, handleWorkspaceExternalDrop } from 'vs/workbench/browser/parts/editor/titleControl';
3131
import { NoTabsTitleControl } from 'vs/workbench/browser/parts/editor/noTabsTitleControl';
3232
import { IEditorStacksModel, IStacksModelChangeEvent, IEditorGroup, EditorOptions, TextEditorOptions, IEditorIdentifier } from 'vs/workbench/common/editor';
33-
import { extractResources } from 'vs/base/browser/dnd';
33+
import { extractResources } from 'vs/workbench/browser/editor';
3434
import { IWindowService, IWindowsService } from 'vs/platform/windows/common/windows';
3535
import { getCodeEditor } from 'vs/editor/common/services/codeEditorService';
3636
import { IThemeService } from 'vs/platform/theme/common/themeService';

src/vs/workbench/browser/parts/editor/tabsTitleControl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
3636
import { IDisposable, dispose, combinedDisposable } from 'vs/base/common/lifecycle';
3737
import { ScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
3838
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
39-
import { extractResources } from 'vs/base/browser/dnd';
39+
import { extractResources } from 'vs/workbench/browser/editor';
4040
import { getOrSet } from 'vs/base/common/map';
4141
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
4242
import { IThemeService, registerThemingParticipant, ITheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService';

src/vs/workbench/browser/parts/editor/titleControl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import { IMenuService, MenuId, IMenu, ExecuteCommandAction } from 'vs/platform/a
3939
import { ResourceContextKey } from 'vs/workbench/common/resources';
4040
import { IThemeService } from 'vs/platform/theme/common/themeService';
4141
import { Themable } from 'vs/workbench/common/theme';
42-
import { IDraggedResource } from 'vs/base/browser/dnd';
42+
import { IDraggedResource } from 'vs/workbench/browser/editor';
4343
import { WORKSPACE_EXTENSION, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces';
4444
import { extname } from 'vs/base/common/paths';
4545
import { IFileService } from 'vs/platform/files/common/files';

src/vs/workbench/parts/files/browser/views/explorerViewer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ import { IWindowService } from 'vs/platform/windows/common/windows';
5555
import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing';
5656
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
5757
import { getPathLabel } from 'vs/base/common/labels';
58-
import { extractResources } from 'vs/base/browser/dnd';
58+
import { extractResources } from 'vs/workbench/browser/editor';
5959

6060
export class FileDataSource implements IDataSource {
6161
constructor(

0 commit comments

Comments
 (0)