From 959c8b024c73af436700e17cb43753be4be80aa3 Mon Sep 17 00:00:00 2001 From: Raymond Zhao <7199958+rzhao271@users.noreply.github.com> Date: Wed, 30 Nov 2022 09:50:54 -0800 Subject: [PATCH] Improve hover accessibility (#167749) - Search entire hover container when adding focus trap - Change keyup to keydown event to activate hover action links properly --- src/vs/base/browser/ui/hover/hoverWidget.ts | 4 ++-- src/vs/workbench/services/hover/browser/hoverWidget.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/base/browser/ui/hover/hoverWidget.ts b/src/vs/base/browser/ui/hover/hoverWidget.ts index e598c1fe87f..96e99cbec4a 100644 --- a/src/vs/base/browser/ui/hover/hoverWidget.ts +++ b/src/vs/base/browser/ui/hover/hoverWidget.ts @@ -72,9 +72,9 @@ export class HoverAction extends Disposable { actionOptions.run(this.actionContainer); })); - this._register(dom.addDisposableListener(this.actionContainer, dom.EventType.KEY_UP, e => { + this._register(dom.addDisposableListener(this.actionContainer, dom.EventType.KEY_DOWN, e => { const event = new StandardKeyboardEvent(e); - if (event.equals(KeyCode.Enter)) { + if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { e.stopPropagation(); e.preventDefault(); actionOptions.run(this.actionContainer); diff --git a/src/vs/workbench/services/hover/browser/hoverWidget.ts b/src/vs/workbench/services/hover/browser/hoverWidget.ts index 90b0ac24f1f..1a5757cf377 100644 --- a/src/vs/workbench/services/hover/browser/hoverWidget.ts +++ b/src/vs/workbench/services/hover/browser/hoverWidget.ts @@ -231,7 +231,7 @@ export class HoverWidget extends Widget { // Add a hover tab loop if the hover has at least one element with a valid tabIndex const firstContainerFocusElement = this._hover.containerDomNode; - const lastContainerFocusElement = this.findLastFocusableChild(this._hover.contentsDomNode); + const lastContainerFocusElement = this.findLastFocusableChild(this._hover.containerDomNode); if (lastContainerFocusElement) { const beforeContainerFocusElement = dom.prepend(this._hoverContainer, $('div')); const afterContainerFocusElement = dom.append(this._hoverContainer, $('div'));