From 1e62030581b05d636e3aa2fe408abb73fad64ce7 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Mon, 13 Jul 2020 09:48:28 -0700 Subject: [PATCH] Revert to previous behavior for tree data providers getChildren (#11308) * Revert to previous behavior for tree data providers without resolve support * Add another sql carbon edit --- .../api/browser/mainThreadTreeViews.ts | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadTreeViews.ts b/src/vs/workbench/api/browser/mainThreadTreeViews.ts index 62cc37cc73..4653e5a9d7 100644 --- a/src/vs/workbench/api/browser/mainThreadTreeViews.ts +++ b/src/vs/workbench/api/browser/mainThreadTreeViews.ts @@ -219,16 +219,23 @@ export class TreeViewDataProvider implements ITreeViewDataProvider { return this.itemsMap.size === 0; } - protected async postGetChildren(elements: ITreeItem[]): Promise { // {{SQL CARBON EDIT}} For use by Component Tree View - const result: ResolvableTreeItem[] = []; + protected async postGetChildren(elements: ITreeItem[]): Promise { // {{SQL CARBON EDIT}} For use by Component Tree View + const result: ITreeItem[] = []; //{{SQL CARBON EDIT}} const hasResolve = await this.hasResolve; if (elements) { for (const element of elements) { - const resolvable = new ResolvableTreeItem(element, hasResolve ? () => { - return this._proxy.$resolve(this.treeViewId, element.handle); - } : undefined); - this.itemsMap.set(element.handle, resolvable); - result.push(resolvable); + // {{SQL CARBON EDIT}} We rely on custom properties on the tree items in a number of places so creating a new item here was + // {{SQL CARBON EDIT}} clearing those. Revert to old behavior if the provider doesn't support a resolve (our normal case) + if (hasResolve) { + const resolvable = new ResolvableTreeItem(element, hasResolve ? () => { + return this._proxy.$resolve(this.treeViewId, element.handle); + } : undefined); + this.itemsMap.set(element.handle, resolvable); + result.push(resolvable); + } else { + this.itemsMap.set(element.handle, element); + result.push(element); + } } } return result;