From 71fd986efb0c4e1d4c79ab2f0dc7d24a975fe2e3 Mon Sep 17 00:00:00 2001 From: Tyler James Leonhardt Date: Fri, 25 Aug 2023 14:17:58 -0700 Subject: [PATCH] Fixes rendering of response that is below the fold (#191337) Steps: 1. ask `reverse a linked list` 2. scroll up right after hitting ENTER 3. wait for response to finish 4. scroll down the view should grow to the response. --- .../contrib/chat/browser/chatListRenderer.ts | 20 +++++++++++++++++-- .../contrib/chat/browser/chatWidget.ts | 5 ++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatListRenderer.ts b/src/vs/workbench/contrib/chat/browser/chatListRenderer.ts index e6ec6bd3ae8..1208e6134c3 100644 --- a/src/vs/workbench/contrib/chat/browser/chatListRenderer.ts +++ b/src/vs/workbench/contrib/chat/browser/chatListRenderer.ts @@ -354,7 +354,15 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer { + disposable.dispose(); + this._onDidChangeItemHeight.fire({ element, height: newHeight }); + })); + } } private renderWelcomeMessage(element: IChatWelcomeMessageViewModel, templateData: IChatListItemTemplate) { @@ -381,7 +389,15 @@ export class ChatListItemRenderer extends Disposable implements ITreeRenderer { + disposable.dispose(); + this._onDidChangeItemHeight.fire({ element, height: newHeight }); + })); + } } /** diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 053278d5af6..7d61828c403 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -530,7 +530,7 @@ export class ChatWidget extends Disposable implements IChatWidget { this._register(this.renderer.onDidChangeItemHeight(() => this.layoutDynamicChatTreeItemMode())); } - layoutDynamicChatTreeItemMode(allowRecurse = true): void { + layoutDynamicChatTreeItemMode(): void { if (!this.viewModel) { return; } @@ -554,10 +554,9 @@ export class ChatWidget extends Disposable implements IChatWidget { this.container.offsetWidth ); - if (needsRerender && allowRecurse) { + if (needsRerender) { // TODO: figure out a better place to reveal the last element revealLastElement(this.tree); - this.layoutDynamicChatTreeItemMode(false); } }