microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.18k stars 28.55k forks source link

[Accessibility] quick fix includes headers in element count for screen reader users #196143

Open jooyoungseo opened 10 months ago

jooyoungseo commented 10 months ago

Type: Bug

CC @meganrogge

When I mispelled something in terminal and I hear the audio cue, I can open the quick fix action by pressing ctrl+.

However, there is only one item "Explain using Copilot." Screen reader says, "2 of 2", but pressing UpArrow and DownArrow does not work.

VS Code version: Code - Insiders 1.84.0-insider (8e11b537e3b091a8b52c7179fb623ecdeecaf4ea, 2023-10-20T05:34:58.027Z) OS version: Windows_NT x64 10.0.22621 Modes: Remote OS version: Linux x64 4.18.0-477.27.1.el8_8.x86_64

System Info |Item|Value| |---|---| |CPUs|11th Gen Intel(R) Core(TM) i5-1145G7 @ 2.60GHz (8 x 2611)| |GPU Status|2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled| |Load (avg)|undefined| |Memory (System)|15.71GB (6.19GB free)| |Process Argv|--crash-reporter-id b05b88e5-8894-4031-ae34-fa034ebddea9| |Screen Reader|yes| |VM|0%| |Item|Value| |---|---| |Remote|SSH: Delta| |OS|Linux x64 4.18.0-477.27.1.el8_8.x86_64| |CPUs|AMD EPYC 7763 64-Core Processor (128 x 2445)| |Memory (System)|251.60GB (135.66GB free)| |VM|0%|
Extensions (93) Extension|Author (truncated)|Version ---|---|--- android-dev-ext|ade|1.3.2 aiprm-lang|AIP|0.0.2 Bookmarks|ale|13.4.2 openscad|Ant|1.2.2 spellright|ban|3.0.118 zoterolatex|bna|0.4.1 mermaid-markdown-syntax-highlighting|bpr|1.5.3 doxdocgen|csc|1.4.0 vscode-markdownlint|Dav|0.52.0 vscode-eslint|dba|2.4.2 vscode-quick-select|dba|0.2.9 vscode-deno|den|3.26.0 gitlens|eam|14.4.0 EditorConfig|Edi|0.16.4 prettier-vscode|esb|10.1.0 vscode-google-translate|fun|1.4.13 codespaces|Git|1.16.0 copilot|Git|1.128.504 copilot-chat|Git|0.9.2023102002 remotehub|Git|0.62.0 vscode-github-actions|git|0.26.2 vscode-pull-request-github|Git|0.74.0 overleaf-workshop|iam|0.3.1 cslpreview|igo|0.2.2 easy-snippet|inu|0.6.3 path-autocomplete|ion|1.25.0 latex-workshop|Jam|9.14.1 lilypond-syntax|jea|0.1.1 scheme|jea|0.2.0 better-cpp-syntax|jef|1.17.2 vscode-bard|jim|0.0.10 google-search|kam|0.0.1 vscode-lua-format|Koi|1.3.8 lilypond-formatter|lhl|0.2.3 lilypond-pdf-preview|lhl|0.2.8 lilypond-snippets|lhl|0.1.1 vslilypond|lhl|1.7.3 zotero|mbl|0.1.10 git-graph|mhu|1.30.0 vscode-docker|ms-|1.27.0 black-formatter|ms-|2023.5.12831009 flake8|ms-|2023.8.0 isort|ms-|2023.11.12711013 python|ms-|2023.19.12931008 vscode-pylance|ms-|2023.10.41 jupyter|ms-|2023.10.1002951100 jupyter-keymap|ms-|1.1.2 jupyter-renderers|ms-|1.0.17 vscode-jupyter-cell-tags|ms-|0.1.8 vscode-jupyter-slideshow|ms-|0.1.5 remote-containers|ms-|0.318.0 remote-ssh|ms-|0.107.2023100615 remote-ssh-edit|ms-|0.86.0 remote-wsl|ms-|0.81.8 vscode-remote-extensionpack|ms-|0.24.0 azure-repos|ms-|0.38.0 cmake-tools|ms-|1.15.31 cpptools|ms-|1.17.5 cpptools-extension-pack|ms-|1.3.0 js-debug-nightly|ms-|2023.10.1717 powershell|ms-|2023.9.5 remote-explorer|ms-|0.5.2023101809 remote-repositories|ms-|0.40.0 vscode-github-issue-notebooks|ms-|0.0.130 vscode-selfhost-test-provider|ms-|0.3.19 vscode-serial-monitor|ms-|0.10.0 vsliveshare|ms-|1.0.5883 autodocstring|njp|0.6.1 pandocciter|not|0.10.3 shiny-python|Pos|0.1.5 shinyuieditor|pos|0.5.0 quarto|qua|1.105.0 r-debugger|RDe|0.5.4 java|red|1.23.0 vscode-xml|red|0.26.1 r|REd|2.8.2 multi-command|ryu|1.6.0 vscode-deepl|soe|1.0.6 abc-music|sof|0.4.0 lua|sum|3.7.0 latex-utilities|tec|0.4.10 cmake|twx|0.0.17 errorlens|use|3.14.0 intellicode-api-usage-examples|Vis|0.2.8 vscodeintellicode|Vis|1.2.30 vscode-arduino|vsc|0.6.0 vscode-java-debug|vsc|0.54.0 vscode-java-dependency|vsc|0.23.1 vscode-java-pack|vsc|0.25.14 vscode-java-test|vsc|0.40.0 vscode-maven|vsc|0.42.0 markdown-all-in-one|yzh|3.5.1 grammarly|znc|0.22.1 (1 theme extensions excluded)
A/B Experiments ``` vsliv695:30137379 vsins829:30139715 vsliv368:30146709 vsreu685:30147344 python383cf:30185419 vspor879:30202332 vspor708:30202333 vspor363:30204092 vstes627:30244334 vslsvsres303:30308271 pythontb:30258533 pythonptprofiler:30281269 vshan820:30294714 vscod805cf:30301675 bridge0708:30335490 bridge0723:30353136 vsaa593:30376534 pythonvs932:30404738 py29gd2263:30784851 vsclangdf:30492506 c4g48928:30535728 dsvsc012:30540252 pynewext54:30618038 a9j8j154:30646983 showlangstatbar:30737417 ecj1e332:30687743 pythonfmttext:30716741 fixshowwlkth:30771523 showindicator:30805243 pythongtdpath:30726887 i26e3531:30792625 welcomedialog:30812478 pythonnosmt12:30779711 pythonidxpt:30768918 pythonnoceb:30776497 copilotsettingt:30808721 asynctok:30821568 dsvsc013:30777762 dsvsc014:30777825 diffeditorv2:30786206 pythonmpswarning:30859870 dsvsc015:30821418 pythontestfixt:30866404 pyreplss1:30865275 pythonmypyd1:30859725 pythoncet0:30859736 pythontbext0:30864172 ```
meganrogge commented 10 months ago

Yes this is a bit confusing as there's only one item and it's already selected, which isn't clear for screen reader users.

meganrogge commented 10 months ago

Same thing happens with the other quick fixes (also the ones in the editor). It announces the currently selected one then says "not selected", which is really confusing

meganrogge commented 10 months ago

@jooyoungseo this is happening because there's a disabled element in the list that acts as a title/header and says "Quick Fix".

meganrogge commented 10 months ago

@mjbvz is there a way we could fix this?

meganrogge commented 10 months ago

@mjbvz notice how the screen reader detects 10 items here when there are only 8 which are actionable

https://github.com/microsoft/vscode/assets/29464607/a5de37e2-e2cb-4fcc-812a-13b8d9dd9abc

justschen commented 9 months ago

Yep revisiting this - this was caused by the addition of the header. The header is technically a list widget item as well, just disabled and with different styling. I'm going to see how the list widget deals with list items, or see if I can override it somehow in actionList