From febf978c2834da84531dfc3759988845c15ef758 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 10 Oct 2018 11:28:19 +0200 Subject: [PATCH] cache panel body size fixes #60018 --- src/vs/base/browser/ui/splitview/panelview.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/vs/base/browser/ui/splitview/panelview.ts b/src/vs/base/browser/ui/splitview/panelview.ts index 3d0da96fb2d..fb3fb024e09 100644 --- a/src/vs/base/browser/ui/splitview/panelview.ts +++ b/src/vs/base/browser/ui/splitview/panelview.ts @@ -46,7 +46,6 @@ export abstract class Panel implements IView { protected _expanded: boolean; protected disposables: IDisposable[] = []; - private expandedSize: number | undefined = undefined; private _headerVisible = true; private _minimumBodySize: number; private _maximumBodySize: number; @@ -55,6 +54,9 @@ export abstract class Panel implements IView { private header: HTMLElement; + private cachedExpandedSize: number | undefined = undefined; + private cachedBodySize: number | undefined = undefined; + private _onDidChange = new Emitter(); readonly onDidChange: Event = this._onDidChange.event; @@ -129,7 +131,7 @@ export abstract class Panel implements IView { this._expanded = !!expanded; this.updateHeader(); - this._onDidChange.fire(expanded ? this.expandedSize : undefined); + this._onDidChange.fire(expanded ? this.cachedExpandedSize : undefined); } get headerVisible(): boolean { @@ -190,8 +192,14 @@ export abstract class Panel implements IView { const headerSize = this.headerVisible ? Panel.HEADER_SIZE : 0; if (this.isExpanded()) { - this.layoutBody(size - headerSize); - this.expandedSize = size; + const bodySize = size - headerSize; + + if (bodySize !== this.cachedBodySize) { + this.layoutBody(bodySize); + this.cachedBodySize = bodySize; + } + + this.cachedExpandedSize = size; } } -- GitLab