As you may or may not have read, the NVDA team released NVDA 0.6p3 last night. Below, I’d like to highlight those of the changes that are of special interest to those using Mozilla products such as Firefox or Thunderbird with it.

Support for text attributes and spell checking

NVDA takes advantage of the new text attribute and spell checking support of Gecko 1.9.1, which will enable exposure of the inline spelling features of Firefox 3.1 and Thunderbird 3.

  • NVDA+F will report things such as font, point size, styles such as bold etc.
  • When reading through text character by character or word by word, if a spelling mistake is encountered, NVDA will announce it, and also where it ends.

This feature will not work with Firefox 3.0.x, as the version of the Gecko platform used with this version of Firefox does not have accessibility information for text attributes and spell checking.

Automatic switching of focus mode

When browsing web pages in Firefox, certain controls such as textboxes, comboboxes etc. can now automatically cause NVDA to switch to focus mode without the user having to press Enter. Escape or NVDA+SpaceBar can be used to turn focus mode off and browse mode back on. Interacting with forms is much more seamless this way, so I recommend everyone to try out this new mode! You can configure it through the Virtual Buffers preferences dialog.

Better reading of the notification bar

Firefox, and to a lesser extent Thunderbird, make use of the notification bar to convey information without interrupting the user’s flow of work. NVDA 0.6p3 has improved the way it reads these important yet unobtrusive notifications by suppressing double-speaking, and other tidying up of the whole process.

Use NVDA to explore the accessible hierarchy of your web pages

From the What’s New document:

* new: In virtual buffers, the review cursor now reviews the text of the buffer, rather than just the internal text of the navigator object (which is often not useful to the user). This means that you can navigate the virtual buffer hierarchically using object navigation and the review cursor will move to that point in the buffer.

This means that the navigator commands (NVDA+NumPad8, NVDA+NumPad2, etc.) will work inside the virtual buffer of a web page, take the review cursor with them as you go, and allow you to bisect your page accessible node for accessible node, in case you wonder why your users complain about accessibility issues.

This makes NVDA not only suited for blind users relying on access to the Windows operating system and its applications, but also for web developers who need (or want) to get a feel for what their web page or application appears like to a blind visitor.

Miscelanious fixes

The below is a small collection of other notable changes that don’t warrant an own section.

  • fix: Fix the issue where tabbing to a checked checkbox in a Mozilla Gecko virtual buffer and pressing space would not announce that the checkbox was being unchecked.
  • fix: Correctly report partially checked checkboxes in Mozilla applications.
  • fix: When reading with the mouse, text in Mozilla Gecko edit fields should now be read.

In Summary

If you run the beta or nightly builds of both Firefox 3.1 and Thunderbird 3.0 AKA Shredder, you should be able to take advantage of all the new features in NVDA 0.6p3. If you use Firefox 3.0.x, you’ll be missing out on the new spell checking and formatting feature, and if you still use Thunderbird 2, most of the good support for Gecko 1.9 and above will not be available to you since that version of Gecko doesn’t work well with NVDA any more.

Go get it, and give it a whirl!

As noted in this blog post, we’re currently working on implementing the accessibility for HTML 5 checkboxes that are indeterminate. An indeterminate checkbox is a checkbox that is neither checked nor unchecked, or half-checked if you will.

The first stage is complete: Firefox 3.2a1pre as of Wednesday’s nightly will expose such indeterminate checkboxes as what we internally call STATE_MIXED. There are still two work items left as far as we can see:

  1. Expose an action name for a checkbox that is in this indeterminate state.
  2. Make sure we fire STATECHANGE events for STATE_MIXED.

For action item 1, I’d like to call out to you guys to offer suggestions on what this action name should be. My initial idea is “toggle”. The reason is that we will never know whether the next state after clicking will be fully checked or fully unchecked. That always depends on the web site’s author to decide. That’s why I first thought of this neutral name.

Anybody got any better ideas, or even a suggestion derived from other such indeterminate, or tristate, checkboxes from operating systems? Post your ideas here or comment on the bug.

This morning, Jeff Walden pinged me on IRC to ask me whether the new indeterminate DOM property for checkboxes that is being introduced in HTML 5 and which recently landed on Mozilla 1.9.2, has any accessibility implications. I did a quick check, and it indeed does have an implication: We don’t expose the partially checked checkbox state properly for html:input @type=”checkbox” yet.

Jeff then filed a bug on the issue, and I took on the task of exposing the correct state. It turns out to be a small fix that is needed to expose this extra state, so hopefully in a few days the sample page will work correctly in the nightlies.

This shows the importance of collaboration between the various backend and frontend teams and the accessibility team. Jeff was unsure, so he asked, and we “attacked” the problem right away, before it became a real problem, in the sense: We potentially release a product that has this not unimportant issue.

So if you implement something new in Gecko like new HTML 5 features, and you are unsure whether there could be any accessibility issues involved, I strongly encourage you to ping surkov, davidb or myself (MarcoZ) on IRC or shoot us an e-mail, or ask in the newsgroup. It may turn out to not be an issue, which is good. Or it may turn out that we have a work item to take care of, which is also good since this is not going to bite us out of nowhere in the future. Also, when the implementation is still new, we’re more likely to have the right fix in place with all memories still fresh.

Asking never hurts, so just ask once too often rather than once too less!