提交 e058bde3 编写于 作者: J Joao Moreno

fix tree dnd drag image

fixes #12311
上级 03a391a0
......@@ -558,6 +558,11 @@ export interface IDragAndDrop {
*/
getDragURI(tree: ITree, element: any): string;
/**
* Returns a label to display when dragging the element.
*/
getDragLabel?(tree: ITree, elements: any[]): string;
/**
* Sent when the drag operation is starting.
*/
......
......@@ -1277,17 +1277,20 @@ export class TreeView extends HeightMap {
e.dataTransfer.effectAllowed = 'copyMove';
e.dataTransfer.setData('URL', item.uri);
if(e.dataTransfer.setDragImage) {
if (elements.length === 1 && item.element) {
e.dataTransfer.setDragImage(item.element, e.offsetX || 6, e.offsetY || 6);
} else if (elements.length > 1) {
var dragImage = document.createElement('div');
dragImage.className = 'monaco-tree-drag-image';
dragImage.textContent = '' + elements.length;
document.body.appendChild(dragImage);
e.dataTransfer.setDragImage(dragImage, -10, -10);
setTimeout(() => document.body.removeChild(dragImage), 0);
let label: string;
if (this.context.dnd.getDragLabel) {
label = this.context.dnd.getDragLabel(this.context.tree, elements);
} else {
label = String(elements.length);
}
const dragImage = document.createElement('div');
dragImage.className = 'monaco-tree-drag-image';
dragImage.textContent = label;
document.body.appendChild(dragImage);
e.dataTransfer.setDragImage(dragImage, -10, -10);
setTimeout(() => document.body.removeChild(dragImage), 0);
}
this.currentDragAndDropData = new dnd.ElementsDragAndDropData(elements);
......
......@@ -757,6 +757,15 @@ export class FileDragAndDrop implements IDragAndDrop {
return stat.resource.toString();
}
getDragLabel(tree: ITree, elements: any[]): string {
if (elements.length > 1) {
return String(elements.length);
}
const stat = elements[0] as FileStat;
return paths.basename(stat.resource.fsPath);
}
public onDragStart(tree: ITree, data: IDragAndDropData, originalEvent: DragMouseEvent): void {
const sources: FileStat[] = data.getData();
let source: FileStat = null;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册