From 3dd212c90d1e1bda37fa9c69fbe7d65ffa3ec021 Mon Sep 17 00:00:00 2001 From: Barbara Valdez <34872381+barbaravaldez@users.noreply.github.com> Date: Thu, 26 Aug 2021 15:11:13 -0700 Subject: [PATCH] Modify treeDataChange event (#125214) (#16907) Modify treeDataChange event to support firing arrays. --- src/vs/vscode.proposed.d.ts | 9 +++++++++ src/vs/workbench/api/common/extHostTreeViews.ts | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index ed0b52f07f..0e3df6a127 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -954,6 +954,15 @@ declare module 'vscode' { //#region Custom Tree View Drag and Drop https://github.com/microsoft/vscode/issues/32592 export interface TreeViewOptions { + /** + * An optional event to signal that elements or the root have changed. + * This will trigger the view to update the changed element/root and its children recursively (if shown). + * To signal that root has changed, do not pass any argument or pass `undefined` or `null`. + */ + onDidChangeTreeData?: Event; + /** + * An optional interface to implement drag and drop in the tree view. + */ dragAndDropController?: DragAndDropController; } diff --git a/src/vs/workbench/api/common/extHostTreeViews.ts b/src/vs/workbench/api/common/extHostTreeViews.ts index 62841dd2c2..6e86a2dfb1 100644 --- a/src/vs/workbench/api/common/extHostTreeViews.ts +++ b/src/vs/workbench/api/common/extHostTreeViews.ts @@ -205,7 +205,7 @@ export class ExtHostTreeViews implements ExtHostTreeViewsShape { } export type Root = null | undefined | void; // {{SQL CARBON EDIT}} export interface -type TreeData = { message: boolean, element: T | Root | false }; +type TreeData = { message: boolean, element: T | T[] | Root | false }; export interface TreeNode extends IDisposable { // {{SQL CARBON EDIT}} export interface item: ITreeItem; @@ -292,7 +292,11 @@ export class ExtHostTreeView extends Disposable { refreshingPromise = new Promise(c => promiseCallback = c); this.refreshPromise = this.refreshPromise.then(() => refreshingPromise!); } - result.elements.push(current.element); + if (Array.isArray(current.element)) { + result.elements.push(...current.element); + } else { + result.elements.push(current.element); + } } if (current.message) { result.message = true;