Code Monkey home page Code Monkey logo

Comments (5)

joaomoreno avatar joaomoreno commented on June 14, 2024 1

The tree seems to be doing the right thing for performance sake: it is not modifying the DOM. Before #208913, the list row was thrown away and rendered again for no good reason. That had the nice side effect of A11Y being read as we desired.

Trying to find a way to kick NVDA to still read it, even though nothing has changed.

from vscode.

alexr00 avatar alexr00 commented on June 14, 2024 1

I didn't have screen reader accessibility mode turned on.

from vscode.

TylerLeonhardt avatar TylerLeonhardt commented on June 14, 2024

Looking at NVDA's log, I see this:

d
1 Results  
Search files by name (append : to go to line or @ to go to symbol)  list
abc.go dir1, file results  1 of 1
i
r
slash

with your example:
image

So we do announce the name, but the second you type another character that gets lost. In 1.88 it would re-say the file.

from vscode.

TylerLeonhardt avatar TylerLeonhardt commented on June 14, 2024

The change that caused this regression is here:
#208913

cc @joaomoreno

and locally, in main, I reverted that commit and the issue went away.

It looks like we were depending on that insert in order to trigger the a11y event to read things out.

Repro:

  • I used NVDA on Windows
  • have a workspace with the following structure:
    • dir/
      • abc.go
    • main.go
  • Open the file picker (ctrl+P)
  • type, slowly, d I r.
  • 🐛 file abc.go only gets read out on the d and not the other typed characters

Here's the Quick Pick tree accessibility provider, if it helps:

class QuickInputAccessibilityProvider implements IListAccessibilityProvider<IQuickPickElement> {
getWidgetAriaLabel(): string {
return localize('quickInput', "Quick Input");
}
getAriaLabel(element: IQuickPickElement): string | null {
return element.separator?.label
? `${element.saneAriaLabel}, ${element.separator.label}`
: element.saneAriaLabel;
}
getWidgetRole(): AriaRole {
return 'listbox';
}
getRole(element: IQuickPickElement) {
return element.hasCheckbox ? 'checkbox' : 'option';
}
isChecked(element: IQuickPickElement): IValueWithChangeEvent<boolean> | undefined {
if (!element.hasCheckbox || !(element instanceof QuickPickItemElement)) {
return undefined;
}
return {
get value() { return element.checked; },
onDidChange: e => element.onChecked(() => e()),
};
}
}

And where we setChildren:

this._tree.setChildren(null, elements);

I'm surprised by this behavior, esp since we don't use an identity provider anymore.

from vscode.

alexr00 avatar alexr00 commented on June 14, 2024

I think I am still reproing the original issue:

  • I made the folder structure from #211976 (comment)
  • ctrl+p
  • Type d, then before it can announce the name of the file, type i
  • abc.go is never announced.

from vscode.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.