From 5aab93bfdea8a0efc8ea11288159f4c1132bec90 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Wed, 25 Oct 2023 07:03:16 -0700 Subject: [PATCH] Clear partial query quick chats when closed Fixes microsoft/vscode-copilot#2353 --- src/vs/workbench/contrib/chat/browser/chatQuick.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatQuick.ts b/src/vs/workbench/contrib/chat/browser/chatQuick.ts index e6965831402..18e04b21280 100644 --- a/src/vs/workbench/contrib/chat/browser/chatQuick.ts +++ b/src/vs/workbench/contrib/chat/browser/chatQuick.ts @@ -7,7 +7,7 @@ import * as dom from 'vs/base/browser/dom'; import { Orientation, Sash } from 'vs/base/browser/ui/sash/sash'; import { disposableTimeout } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; import { Disposable, DisposableStore, IDisposable, MutableDisposable } from 'vs/base/common/lifecycle'; import { Selection } from 'vs/editor/common/core/selection'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; @@ -61,6 +61,14 @@ export class QuickChatService extends Disposable implements IQuickChatService { this.close(); } else { this.open(providerId, options); + // If this is a partial query, the value should be cleared when closed as otherwise it + // would remain for the next time the quick chat is opened in any context. + if (options?.isPartialQuery) { + const disposable = this._store.add(Event.once(this.onDidClose)(() => { + this._currentChat?.clearValue(); + this._store.delete(disposable); + })); + } } } @@ -300,6 +308,10 @@ class QuickChat extends Disposable { this.focus(selection); } + clearValue(): void { + this.widget.inputEditor.setValue(''); + } + private updateModel(): void { this.model ??= this.chatService.startSession(this._options.providerId, CancellationToken.None); if (!this.model) {