Skip to content

Commit f48fb74

Browse files
committed
Move rendering of suggest details to animation frame
1 parent bd09ca9 commit f48fb74

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/vs/editor/contrib/suggest/browser/suggestWidget.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ export class SuggestWidget implements IDisposable {
105105
private _isAuto: boolean = false;
106106
private _loadingTimeout?: IDisposable;
107107
private _pendingLayout?: IDisposable;
108+
private _pendingShowDetails?: IDisposable;
108109
private _currentSuggestionDetails?: CancelablePromise<void>;
109110
private _focusedItem?: CompletionItem;
110111
private _ignoreFocusEvents: boolean = false;
@@ -697,15 +698,19 @@ export class SuggestWidget implements IDisposable {
697698
}
698699

699700
showDetails(loading: boolean): void {
700-
this._details.show();
701-
if (loading) {
702-
this._details.widget.renderLoading();
703-
} else {
704-
this._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);
705-
}
706-
this._positionDetails();
707-
this.editor.focus();
708-
this.element.domNode.classList.add('shows-details');
701+
this._pendingShowDetails?.dispose();
702+
this._pendingShowDetails = dom.runAtThisOrScheduleAtNextAnimationFrame(() => {
703+
this._pendingShowDetails = undefined;
704+
this._details.show();
705+
if (loading) {
706+
this._details.widget.renderLoading();
707+
} else {
708+
this._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);
709+
}
710+
this._positionDetails();
711+
this.editor.focus();
712+
this.element.domNode.classList.add('shows-details');
713+
});
709714
}
710715

711716
toggleExplainMode(): void {

0 commit comments

Comments
 (0)