From 345ef685bd587ce23bedce336431bdb762492863 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 19 Jun 2023 11:52:43 -0400 Subject: [PATCH] fix 185127 --- .../browser/accessibility.contribution.ts | 4 ++-- .../browser/accessibilityContribution.ts | 2 +- .../accessibility/browser/accessibleView.ts | 9 ++++++++- .../chat/browser/actions/chatAccessibilityHelp.ts | 14 +++++++------- .../contrib/chat/browser/actions/chatActions.ts | 4 ++-- .../inlineChat/browser/inlineChatActions.ts | 4 ++-- .../browser/terminalAccessibilityHelp.ts | 2 +- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.ts b/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.ts index 94b4e97cb5e..0d8441a190c 100644 --- a/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.ts +++ b/src/vs/workbench/contrib/accessibility/browser/accessibility.contribution.ts @@ -37,7 +37,7 @@ class AccessibilityHelpProvider extends Disposable implements IAccessibleContent this._editor.focus(); this.dispose(); } - options: IAccessibleViewOptions = { ariaLabel: localize('terminal-help-label', "terminal accessibility help") }; + options: IAccessibleViewOptions = { isHelpMenu: true, ariaLabel: localize('terminal-help-label', "terminal accessibility help") }; id: string = 'editor'; onKeyDown(e: IKeyboardEvent): void { if (e.keyCode === KeyCode.KeyH) { @@ -141,7 +141,7 @@ class HoverAccessibileViewContribution extends Disposable { static ID: 'hoverAccessibleViewContribution'; constructor() { super(); - this._register(AccessibilityViewAction.addImplementation(105, 'hover', accessor => { + this._register(AccessibilityViewAction.addImplementation(90, 'hover', accessor => { const accessibleViewService = accessor.get(IAccessibleViewService); const codeEditorService = accessor.get(ICodeEditorService); const editor = codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor(); diff --git a/src/vs/workbench/contrib/accessibility/browser/accessibilityContribution.ts b/src/vs/workbench/contrib/accessibility/browser/accessibilityContribution.ts index c0cff094657..f5ad93c5fe8 100644 --- a/src/vs/workbench/contrib/accessibility/browser/accessibilityContribution.ts +++ b/src/vs/workbench/contrib/accessibility/browser/accessibilityContribution.ts @@ -13,7 +13,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis export const enum AccessibilityVerbositySettingId { Terminal = 'accessibility.verbosity.terminal', DiffEditor = 'accessibility.verbosity.diffEditor', - Chat = 'accessibility.verbosity.chat', + Chat = 'accessibility.verbosity.panelChat', InlineChat = 'accessibility.verbosity.inlineChat', KeybindingsEditor = 'accessibility.verbosity.keybindingsEditor', Notebook = 'accessibility.verbosity.notebook' diff --git a/src/vs/workbench/contrib/accessibility/browser/accessibleView.ts b/src/vs/workbench/contrib/accessibility/browser/accessibleView.ts index 9022da3479b..51db40a6bd9 100644 --- a/src/vs/workbench/contrib/accessibility/browser/accessibleView.ts +++ b/src/vs/workbench/contrib/accessibility/browser/accessibleView.ts @@ -44,8 +44,10 @@ export interface IAccessibleViewService { export interface IAccessibleViewOptions { ariaLabel: string; + isHelpMenu?: boolean; } + class AccessibleView extends Disposable { private _editorWidget: CodeEditorWidget; get editorWidget() { return this._editorWidget; } @@ -95,8 +97,11 @@ class AccessibleView extends Disposable { } private _render(provider: IAccessibleContentProvider, container: HTMLElement): IDisposable { + const settingKey = `accessibility.verbosity.${provider.id}`; + const value = this._configurationService.getValue(settingKey); - const fragment = provider.provideContent() + localize('exit-tip', 'Exit this menu via the Escape key.\n'); + const disableHelpHint = provider.options.isHelpMenu && value ? localize('disable-help-hint', '\nTo disable the `accessibility.verbosity` hint for this feature, press D now.\n') : '\n'; + const fragment = provider.provideContent() + disableHelpHint + localize('exit-tip', 'Exit this menu via the Escape key.'); this._getTextModel(URI.from({ path: `accessible-view-${provider.id}`, scheme: 'accessible-view', fragment })).then((model) => { if (!model) { @@ -112,6 +117,8 @@ class AccessibleView extends Disposable { this._register(this._editorWidget.onKeyUp((e) => { if (e.keyCode === KeyCode.Escape) { this._contextViewService.hideContextView(); + } else if (e.keyCode === KeyCode.KeyD) { + this._configurationService.updateValue(settingKey, false); } e.stopPropagation(); provider.onKeyDown?.(e); diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.ts b/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.ts index 76e92276042..844fb3fee9f 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.ts @@ -16,10 +16,10 @@ import { InlineChatController } from 'vs/workbench/contrib/inlineChat/browser/in const inputBox = localize('chat.requestHistory', 'In the input box, use up and down arrows to navigate your request history. Edit input and use enter or the submit button to run a new request.'); -export function getAccessibilityHelpText(accessor: ServicesAccessor, type: 'chat' | 'inline'): string { +export function getAccessibilityHelpText(accessor: ServicesAccessor, type: 'panelChat' | 'inlineChat'): string { const keybindingService = accessor.get(IKeybindingService); const content = []; - if (type === 'chat') { + if (type === 'panelChat') { content.push(localize('chat.overview', 'The chat view is comprised of an input box and a request/response list. The input box is used to make requests and the list is used to display responses.')); content.push(inputBox); content.push(localize('chat.announcement', 'Chat responses will be announced as they come in. A response will indicate the number of code blocks, if any, and then the rest of the response.')); @@ -50,10 +50,10 @@ function descriptionForCommand(commandId: string, msg: string, noKbMsg: string, return format(noKbMsg, commandId); } -export async function runAccessibilityHelpAction(accessor: ServicesAccessor, editor: ICodeEditor, type: 'chat' | 'inline'): Promise { +export async function runAccessibilityHelpAction(accessor: ServicesAccessor, editor: ICodeEditor, type: 'panelChat' | 'inlineChat'): Promise { const widgetService = accessor.get(IChatWidgetService); const accessibleViewService = accessor.get(IAccessibleViewService); - const inputEditor: ICodeEditor | undefined = type === 'chat' ? widgetService.lastFocusedWidget?.inputEditor : editor; + const inputEditor: ICodeEditor | undefined = type === 'panelChat' ? widgetService.lastFocusedWidget?.inputEditor : editor; const editorUri = editor.getModel()?.uri; if (!inputEditor || !editorUri) { @@ -71,15 +71,15 @@ export async function runAccessibilityHelpAction(accessor: ServicesAccessor, edi id: type, provideContent: () => helpText, onClose: () => { - if (type === 'chat' && cachedPosition) { + if (type === 'panelChat' && cachedPosition) { inputEditor.setPosition(cachedPosition); inputEditor.focus(); - } else if (type === 'inline') { + } else if (type === 'inlineChat') { InlineChatController.get(editor)?.focus(); } provider.dispose(); }, - options: { ariaLabel: type === 'chat' ? localize('chat-help-label', "Chat accessibility help") : localize('inline-chat-label', "Inline chat accessibility help") } + options: { isHelpMenu: true, ariaLabel: type === 'panelChat' ? localize('chat-help-label', "Chat accessibility help") : localize('inline-chat-label', "Inline chat accessibility help") } }); accessibleViewService.show(type); } diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts index daf00097928..59f734ca6ba 100644 --- a/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts +++ b/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts @@ -102,12 +102,12 @@ export function registerChatActions() { static ID: 'chatAccessibilityHelpContribution'; constructor() { super(); - this._register(AccessibilityHelpAction.addImplementation(105, 'chat', async accessor => { + this._register(AccessibilityHelpAction.addImplementation(105, 'panelChat', async accessor => { const codeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor() || accessor.get(ICodeEditorService).getFocusedCodeEditor(); if (!codeEditor) { return; } - runAccessibilityHelpAction(accessor, codeEditor, 'chat'); + runAccessibilityHelpAction(accessor, codeEditor, 'panelChat'); }, CONTEXT_IN_CHAT_INPUT)); } } diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts index 05a7096cc0b..458daa17cdf 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts @@ -619,12 +619,12 @@ export class ContractMessageAction extends AbstractInlineChatAction { export class InlineAccessibilityHelpContribution extends Disposable { constructor() { super(); - this._register(AccessibilityHelpAction.addImplementation(106, 'inline-chat', async accessor => { + this._register(AccessibilityHelpAction.addImplementation(106, 'inlineChat', async accessor => { const codeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor() || accessor.get(ICodeEditorService).getFocusedCodeEditor(); if (!codeEditor) { return; } - runAccessibilityHelpAction(accessor, codeEditor, 'inline'); + runAccessibilityHelpAction(accessor, codeEditor, 'inlineChat'); }, CTX_INLINE_CHAT_FOCUSED)); } } diff --git a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.ts b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.ts index fbc0c79e9c5..be46a7d5e56 100644 --- a/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.ts +++ b/src/vs/workbench/contrib/terminalContrib/accessibility/browser/terminalAccessibilityHelp.ts @@ -29,7 +29,7 @@ export class TerminalAccessibleContentProvider extends Disposable implements IAc this._instance.focus(); this.dispose(); } - options: IAccessibleViewOptions = { ariaLabel: localize('terminal-help-label', "terminal accessibility help") }; + options: IAccessibleViewOptions = { isHelpMenu: true, ariaLabel: localize('terminal-help-label', "terminal accessibility help") }; id: string = 'terminal'; constructor(