Fix "new chat" before focusing chat panel (#213478)

Fix #213353
This commit is contained in:
Rob Lourens
2024-05-25 16:59:00 -07:00
committed by GitHub
parent 91b99e1445
commit cb2759ec70
@@ -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);
}