diff --git a/src/vs/base/browser/ui/list/list.ts b/src/vs/base/browser/ui/list/list.ts index 074d10944de..55037c434ed 100644 --- a/src/vs/base/browser/ui/list/list.ts +++ b/src/vs/base/browser/ui/list/list.ts @@ -88,7 +88,7 @@ export const ListDragOverReactions = { export interface IListDragAndDrop { getDragURI(element: T): string | null; getDragLabel?(elements: T[]): string | undefined; - onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void; + onDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void; onDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction; drop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void; } diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 8a9bf0026c1..f8605ea43e7 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -632,7 +632,9 @@ export class ListView implements ISpliceable, IDisposable { this.currentDragData = new ElementsDragAndDropData(elements); StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements); - this.dnd.onDragStart(this.currentDragData, event); + if (this.dnd.onDragStart) { + this.dnd.onDragStart(this.currentDragData, event); + } } private onDragOver(event: IListDragEvent): boolean { diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index bb91459c2a2..30e2d62656a 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -956,11 +956,17 @@ class ListViewDragAndDrop implements IListViewDragAndDrop { } getDragLabel?(elements: T[]): string | undefined { - return this.dnd.getDragLabel && this.dnd.getDragLabel(elements); + if (this.dnd.getDragLabel) { + return this.dnd.getDragLabel(elements); + } + + return undefined; } onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void { - this.dnd.onDragStart(data, originalEvent); + if (this.dnd.onDragStart) { + this.dnd.onDragStart(data, originalEvent); + } } onDragOver(data: IDragAndDropData, targetElement: T, targetIndex: number, originalEvent: DragEvent): boolean | IListDragOverReaction { diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index b91ee43373d..7d6ea60ba3d 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -28,11 +28,17 @@ class TreeNodeListDragAndDrop implements IListDragAndDrop< } getDragLabel(nodes: ITreeNode[]): string | undefined { - return this.dnd.getDragLabel && this.dnd.getDragLabel(nodes.map(node => node.element)); + if (this.dnd.getDragLabel) { + return this.dnd.getDragLabel(nodes.map(node => node.element)); + } + + return undefined; } onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void { - this.dnd.onDragStart(data, originalEvent); + if (this.dnd.onDragStart) { + this.dnd.onDragStart(data, originalEvent); + } } onDragOver(data: IDragAndDropData, targetNode: ITreeNode | undefined, targetIndex: number | undefined, originalEvent: DragEvent, raw = true): boolean | IListDragOverReaction { diff --git a/src/vs/base/browser/ui/tree/asyncDataTree.ts b/src/vs/base/browser/ui/tree/asyncDataTree.ts index 91ea190331c..ada9d11c5eb 100644 --- a/src/vs/base/browser/ui/tree/asyncDataTree.ts +++ b/src/vs/base/browser/ui/tree/asyncDataTree.ts @@ -134,17 +134,23 @@ function asObjectTreeOptions(options?: IAsyncDataTreeOpt getDragURI(node) { return options.dnd!.getDragURI(node.element as T); }, - getDragLabel: options.dnd!.getDragLabel && ((nodes) => { - return options.dnd!.getDragLabel!(nodes.map(node => node.element as T)); - }), + getDragLabel(nodes) { + if (options.dnd!.getDragLabel) { + return options.dnd!.getDragLabel!(nodes.map(node => node.element as T)); + } + + return undefined; + }, onDragStart(data, originalEvent) { - return options.dnd!.onDragStart(data, originalEvent); + if (options.dnd!.onDragStart) { + options.dnd!.onDragStart!(data, originalEvent); + } }, onDragOver(data, targetNode, targetIndex, originalEvent) { return options.dnd!.onDragOver(data, targetNode && targetNode.element as T, targetIndex, originalEvent); }, drop(data, targetNode, targetIndex, originalEvent) { - return options.dnd!.drop(data, targetNode && targetNode.element as T, targetIndex, originalEvent); + options.dnd!.drop(data, targetNode && targetNode.element as T, targetIndex, originalEvent); } }, multipleSelectionController: options.multipleSelectionController && { diff --git a/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts b/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts index ba2c6babe7a..c0bbae43391 100644 --- a/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts +++ b/src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts @@ -288,10 +288,6 @@ class WatchExpressionsDragAndDrop implements ITreeDragAndDrop { return elements[0].name; } - onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void { - // noop - } - drop(data: IDragAndDropData, targetElement: IExpression, targetIndex: number, originalEvent: DragEvent): void { const draggedData = data.getData(); if (Array.isArray(draggedData)) {