diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index dbec665ac82..539cbedf6cc 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -64,6 +64,7 @@ export class ListView implements ISpliceable, IDisposable { private gesture: Gesture; private rowsContainer: HTMLElement; private scrollableElement: ScrollableElement; + private didRequestScrollableElementUpdate: boolean = false; private splicing = false; private dragAndDropScrollInterval: number; private dragAndDropScrollTimeout: number; @@ -198,7 +199,15 @@ export class ListView implements ISpliceable, IDisposable { const scrollHeight = this.getContentHeight(); this.rowsContainer.style.height = `${scrollHeight}px`; - this.scrollableElement.setScrollDimensions({ scrollHeight }); + + if (!this.didRequestScrollableElementUpdate) { + DOM.scheduleAtNextAnimationFrame(() => { + this.scrollableElement.setScrollDimensions({ scrollHeight }); + this.didRequestScrollableElementUpdate = false; + }); + + this.didRequestScrollableElementUpdate = true; + } return deleted.map(i => i.element); } diff --git a/src/vs/base/browser/ui/tree/tree.ts b/src/vs/base/browser/ui/tree/tree.ts index 5de6f27c09a..d829edbde94 100644 --- a/src/vs/base/browser/ui/tree/tree.ts +++ b/src/vs/base/browser/ui/tree/tree.ts @@ -174,6 +174,10 @@ export class Tree implements IDisposable { return this.model.splice(location, deleteCount, toInsert); } + collapseAll(): void { + this.model.setCollapsedAll(true); + } + refilter(location?: number[]): void { this.model.refilter(location); } diff --git a/test/tree/public/index.html b/test/tree/public/index.html index caa64367070..5801da0b799 100644 --- a/test/tree/public/index.html +++ b/test/tree/public/index.html @@ -22,10 +22,19 @@ +