diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.ts index 8f2224e2fd4..b74d1b38b9c 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.ts @@ -16,7 +16,9 @@ import { CHAT_CATEGORY, isChatViewTitleActionContext } from 'vs/workbench/contri import { clearChatEditor } from 'vs/workbench/contrib/chat/browser/actions/chatClear'; import { CHAT_VIEW_ID, IChatWidgetService } from 'vs/workbench/contrib/chat/browser/chat'; import { ChatEditorInput } from 'vs/workbench/contrib/chat/browser/chatEditorInput'; +import { ChatViewPane } from 'vs/workbench/contrib/chat/browser/chatViewPane'; import { CONTEXT_IN_CHAT_SESSION, CONTEXT_CHAT_ENABLED } from 'vs/workbench/contrib/chat/common/chatContextKeys'; +import { IViewsService } from 'vs/workbench/services/views/common/viewsService'; export const ACTION_ID_NEW_CHAT = `workbench.action.chat.newChat`; @@ -38,7 +40,7 @@ export function registerNewChatActions() { }); } async run(accessor: ServicesAccessor, ...args: any[]) { - announceChatCleared(accessor); + announceChatCleared(accessor.get(IAccessibilitySignalService)); await clearChatEditor(accessor); } }); @@ -73,22 +75,26 @@ export function registerNewChatActions() { }); } - run(accessor: ServicesAccessor, ...args: any[]) { + async run(accessor: ServicesAccessor, ...args: any[]) { const context = args[0]; + const accessibilitySignalService = accessor.get(IAccessibilitySignalService); if (isChatViewTitleActionContext(context)) { // Is running in the Chat view title - announceChatCleared(accessor); + announceChatCleared(accessibilitySignalService); context.chatView.clear(); context.chatView.widget.focusInput(); } else { // Is running from f1 or keybinding const widgetService = accessor.get(IChatWidgetService); + const viewsService = accessor.get(IViewsService); - const widget = widgetService.lastFocusedWidget; + let widget = widgetService.lastFocusedWidget; if (!widget) { - return; + const chatView = await viewsService.openView(CHAT_VIEW_ID) as ChatViewPane; + widget = chatView.widget; } - announceChatCleared(accessor); + + announceChatCleared(accessibilitySignalService); widget.clear(); widget.focusInput(); } @@ -96,6 +102,6 @@ export function registerNewChatActions() { }); } -function announceChatCleared(accessor: ServicesAccessor): void { - accessor.get(IAccessibilitySignalService).playSignal(AccessibilitySignal.clear); +function announceChatCleared(accessibilitySignalService: IAccessibilitySignalService): void { + accessibilitySignalService.playSignal(AccessibilitySignal.clear); }