Merge pull request #186536 from microsoft/merogge/chat-focus

use focused chat response item when accessible view is invoked
This commit is contained in:
Megan Rogge 2023-06-28 11:59:46 -07:00 committed by GitHub
commit 1c4678bc05
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -39,8 +39,7 @@ import { registerMoveActions } from 'vs/workbench/contrib/chat/browser/actions/c
import { registerClearActions } from 'vs/workbench/contrib/chat/browser/actions/chatClearActions';
import { AccessibleViewAction } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution';
import { AccessibleViewType, IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { IChatResponseViewModel, isResponseVM } from 'vs/workbench/contrib/chat/common/chatViewModel';
import { isResponseVM } from 'vs/workbench/contrib/chat/common/chatViewModel';
import { CONTEXT_IN_CHAT_SESSION } from 'vs/workbench/contrib/chat/common/chatContextKeys';
import { ChatAccessibilityService } from 'vs/workbench/contrib/chat/browser/chatAccessibilityService';
@ -125,26 +124,14 @@ class ChatAccessibleViewContribution extends Disposable {
super();
this._register(AccessibleViewAction.addImplementation(100, 'panelChat', accessor => {
const accessibleViewService = accessor.get(IAccessibleViewService);
const codeEditorService = accessor.get(ICodeEditorService);
const editor = codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor();
const widgetService = accessor.get(IChatWidgetService);
const editorUri = editor?.getModel()?.uri;
const widget: IChatWidget | undefined = widgetService.lastFocusedWidget;
const focusedItem: ChatTreeItem | undefined = widget?.getFocus();
if (!widget || !focusedItem) {
if (!widget || !focusedItem || !isResponseVM(focusedItem)) {
return false;
}
const codeBlockInfo = editorUri ? widget!.getCodeBlockInfoForEditor(editorUri) : undefined;
let responseItem: ChatTreeItem | undefined;
if (codeBlockInfo) {
responseItem = codeBlockInfo.element;
} else {
responseItem = widget!.viewModel?.getItems().reverse().find((item): item is IChatResponseViewModel => isResponseVM(item));
}
if (!isResponseVM(responseItem)) {
return false;
}
const responseContent = responseItem?.response.value;
const responseContent = focusedItem?.response.value;
if (!responseContent) {
return false;
}