From 85b53d324a057ce52d8ff1e893148d7fc4ea71e8 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Fri, 9 Mar 2018 09:51:26 -0800 Subject: [PATCH] Relayout the suggestWidget when its height changes Fixes #45408 --- src/vs/editor/contrib/suggest/suggestWidget.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/contrib/suggest/suggestWidget.ts b/src/vs/editor/contrib/suggest/suggestWidget.ts index 56711817ef5..9dcc6006611 100644 --- a/src/vs/editor/contrib/suggest/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/suggestWidget.ts @@ -370,6 +370,7 @@ export class SuggestWidget implements IContentWidget, IDelegate private listElement: HTMLElement; private details: SuggestionDetails; private list: List; + private listHeight: number; private suggestWidgetVisible: IContextKey; private suggestWidgetMultipleSuggestions: IContextKey; @@ -658,10 +659,6 @@ export class SuggestWidget implements IContentWidget, IDelegate this._ariaAlert(this.details.getAriaLabel()); break; } - - if (stateChanged && this.state !== State.Hidden) { - this.editor.layoutContentWidget(this); - } } showTriggered(auto: boolean) { @@ -918,7 +915,12 @@ export class SuggestWidget implements IContentWidget, IDelegate } private show(): void { - this.updateListHeight(); + const newHeight = this.updateListHeight(); + if (newHeight !== this.listHeight) { + this.editor.layoutContentWidget(this); + this.listHeight = newHeight; + } + this.suggestWidgetVisible.set(true); this.showTimeout = TPromise.timeout(100).then(() => { @@ -958,7 +960,7 @@ export class SuggestWidget implements IContentWidget, IDelegate return SuggestWidget.ID; } - private updateListHeight(): void { + private updateListHeight(): number { let height = 0; if (this.state === State.Empty || this.state === State.Loading) { @@ -971,6 +973,7 @@ export class SuggestWidget implements IContentWidget, IDelegate this.element.style.lineHeight = `${this.unfocusedHeight}px`; this.listElement.style.height = `${height}px`; this.list.layout(height); + return height; } private adjustDocsPosition() {