mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 19:44:25 +01:00
list: make onDragStart optional
This commit is contained in:
@@ -88,7 +88,7 @@ export const ListDragOverReactions = {
|
||||
export interface IListDragAndDrop<T> {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -632,7 +632,9 @@ export class ListView<T> implements ISpliceable<T>, 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<T>): boolean {
|
||||
|
||||
@@ -956,11 +956,17 @@ class ListViewDragAndDrop<T> implements IListViewDragAndDrop<T> {
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
@@ -28,11 +28,17 @@ class TreeNodeListDragAndDrop<T, TFilterData, TRef> implements IListDragAndDrop<
|
||||
}
|
||||
|
||||
getDragLabel(nodes: ITreeNode<T, TFilterData>[]): 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<T, TFilterData> | undefined, targetIndex: number | undefined, originalEvent: DragEvent, raw = true): boolean | IListDragOverReaction {
|
||||
|
||||
@@ -134,17 +134,23 @@ function asObjectTreeOptions<TInput, T, TFilterData>(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 && {
|
||||
|
||||
Reference in New Issue
Block a user