From edbf964e4247a0a477bf05623b6caaa71a359706 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 12 Sep 2024 11:49:10 +0200 Subject: [PATCH] ensure accept/discard always reveals the zone widget (#228327) fixes https://github.com/microsoft/vscode-copilot/issues/7933 --- .../contrib/inlineChat/browser/inlineChatStrategies.ts | 3 +-- .../contrib/inlineChat/browser/inlineChatZoneWidget.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts index 859a480c87e..cd2406cd971 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatStrategies.ts @@ -649,8 +649,7 @@ export class LiveStrategy extends EditModeStrategy { }); if (widgetData) { - this._zone.updatePositionAndHeight(widgetData.position); - + this._zone.reveal(widgetData.position); const mode = this._configService.getValue<'on' | 'off' | 'auto'>(InlineChatConfigKeys.AccessibleDiffView); if (mode === 'on' || mode === 'auto' && this._accessibilityService.isScreenReaderOptimized()) { diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts index a7ca760345b..624bca5f254 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts @@ -169,6 +169,11 @@ export class InlineChatZoneWidget extends ZoneWidget { this._scrollUp.enable(); } + reveal(position: Position) { + this._scrollUp.reset(); + this.updatePositionAndHeight(position); + } + override updatePositionAndHeight(position: Position): void { const revealZone = this._createZoneAndScrollRestoreFn(position); super.updatePositionAndHeight(position, this._computeHeight().linesValue); @@ -255,6 +260,10 @@ class ScrollUpState { this._listener.dispose(); } + reset(): void { + this._didScrollUpOrDown = undefined; + } + enable(): void { this._didScrollUpOrDown = undefined; this._listener.value = this._editor.onDidScrollChange(e => {