Skip to content

Commit d04106a

Browse files
committed
open editors shouldn't accept every drag and drop
1 parent 4fb6b70 commit d04106a

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ import { fillInContextMenuActions } from 'vs/platform/actions/browser/menuItemAc
3434
import { IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions';
3535
import { DirtyEditorContext, OpenEditorsGroupContext } from 'vs/workbench/parts/files/electron-browser/fileCommands';
3636
import { ResourceContextKey } from 'vs/workbench/common/resources';
37-
import { ResourcesDropHandler, fillResourceDataTransfers } from 'vs/workbench/browser/dnd';
37+
import { ResourcesDropHandler, fillResourceDataTransfers, CodeDataTransfers } from 'vs/workbench/browser/dnd';
3838
import { ViewletPanel, IViewletPanelOptions } from 'vs/workbench/browser/parts/views/panelViewlet';
3939
import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet';
40-
import { IDragAndDropData } from 'vs/base/browser/dnd';
40+
import { IDragAndDropData, DataTransfers } from 'vs/base/browser/dnd';
4141
import { memoize } from 'vs/base/common/decorators';
42-
import { ElementsDragAndDropData } from 'vs/base/browser/ui/list/listView';
42+
import { ElementsDragAndDropData, DesktopDragAndDropData } from 'vs/base/browser/ui/list/listView';
4343
import { URI } from 'vs/base/common/uri';
4444

4545
const $ = dom.$;
@@ -645,6 +645,18 @@ class OpenEditorsDragAndDrop implements IListDragAndDrop<OpenEditor | IEditorGro
645645
}
646646

647647
onDragOver(data: IDragAndDropData, targetElement: OpenEditor | IEditorGroup, targetIndex: number, originalEvent: DragEvent): boolean | IListDragOverReaction {
648+
if (data instanceof DesktopDragAndDropData) {
649+
const types = originalEvent.dataTransfer.types;
650+
const typesArray: string[] = [];
651+
for (let i = 0; i < types.length; i++) {
652+
typesArray.push(types[i].toLowerCase()); // somehow the types are lowercase
653+
}
654+
655+
if (typesArray.indexOf(DataTransfers.FILES.toLowerCase()) === -1 && typesArray.indexOf(CodeDataTransfers.FILES.toLowerCase()) === -1) {
656+
return false;
657+
}
658+
}
659+
648660
return true;
649661
}
650662

0 commit comments

Comments
 (0)