From cf14d2c66a3009c82e79eadf8f4a6fac409e770e Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 1 Feb 2019 11:45:27 +0100 Subject: [PATCH] fixes #67725 --- src/vs/base/browser/ui/tree/asyncDataTree.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/vs/base/browser/ui/tree/asyncDataTree.ts b/src/vs/base/browser/ui/tree/asyncDataTree.ts index 332fa1d0bcf..4467d58769f 100644 --- a/src/vs/base/browser/ui/tree/asyncDataTree.ts +++ b/src/vs/base/browser/ui/tree/asyncDataTree.ts @@ -14,7 +14,7 @@ import { IListStyles } from 'vs/base/browser/ui/list/listWidget'; import { Iterator } from 'vs/base/common/iterator'; import { IDragAndDropData } from 'vs/base/browser/dnd'; import { ElementsDragAndDropData } from 'vs/base/browser/ui/list/listView'; -import { isPromiseCanceledError } from 'vs/base/common/errors'; +import { isPromiseCanceledError, onUnexpectedError } from 'vs/base/common/errors'; import { toggleClass } from 'vs/base/browser/dom'; const enum AsyncDataTreeNodeState { @@ -675,14 +675,16 @@ export class AsyncDataTree implements IDisposable const children = await childrenPromise; this.setChildren(node, children, recursive, viewStateContext); } catch (err) { - if (isPromiseCanceledError(err)) { - return; - } + node.needsRefresh = true; if (node !== this.root) { this.tree.collapse(node === this.root ? null : node); } + if (isPromiseCanceledError(err)) { + return; + } + throw err; } finally { if (node.slow) { @@ -713,11 +715,12 @@ export class AsyncDataTree implements IDisposable } private _onDidChangeCollapseState({ node, deep }: ICollapseStateChangeEvent, any>): void { - if (!node.collapsed && node.element.state === AsyncDataTreeNodeState.Uninitialized) { + if (!node.collapsed && (node.element.state === AsyncDataTreeNodeState.Uninitialized || node.element.needsRefresh)) { if (deep) { this.collapse(node.element.element as T); } else { - this.refreshAndRenderNode(node.element, false, ChildrenResolutionReason.Expand); + this.refreshAndRenderNode(node.element, false, ChildrenResolutionReason.Expand) + .catch(onUnexpectedError); } } } -- GitLab