Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support reporting of misspelled words in Windows 8.1 global spellchecker #3853

Closed
nvaccessAuto opened this issue Feb 6, 2014 · 2 comments
Closed

Comments

@nvaccessAuto
Copy link

Reported by k_kolev1985 on 2014-02-06 09:44
In Windows 8.1, there's a global spellchecking functionality. It works in all "modern" (aka "metro") applications. It allows us to know if we've misspelled a word and correct it if we want (like we can in applications like MS Word for example). Unfortunately however, NVDA seams not to be able to report if a written word is misspelled or not. The built-in screen reader - Narrator - reports if a word is misspelled as soon as we write the word and insert a space after it, though it does not report it as misspelled if we read line by line with it. NVDA can report misspelled words when we read text (incl line by line) in applications like MS Word and the Mozila products, but it does not do it in the "modern" Windows 8.1 applications. The option to report spelling errors in NVDA -> Settings -> Document Formatting is turned on, of course.

Steps to reproduce it:

  1. Open a "modern" Windows 8.1 application (eg. the built-in Calendar).
  2. Press the "Applications" key to bring up the context menu and from there choose "Create", to create a new event.
  3. Either in the "Subject" or in the "Notes" field, write a misspelled word and insert a space.
  4. Read the current line with the respective keystroke for NVDA (eg. NVDA+Up Arrow).
  5. Move the text caret on the beginning of the misspelled word or somewhere in it. Then press the "Applications" key to bring up the context menu. If the spellchecker has a suggestion for the misspelled word, it will be in there. In short, you can work with this global spellchecker like you can with the one in the Mozilla products, for example.

Expected results: NVDA should report the written word as misspelled as soon as the space is inserted, or at least when reading the text line by line or word by word.
Actual results: NVDA does not report the written word as misspelled when the space is inserted, nor when reading the text line by line or word by word.

System specs:

  • Operating system: Windows 8.1, 32-bit, with locale and regional settings set to "Bulgarian" (incl. a language pack for the interface and the spellchecking).
  • NVDA version: next-10304,4e28381, also set to "Bulgarian".
@nvaccessAuto
Copy link
Author

Comment 1 by jteh on 2014-02-13 15:20
Technical: We can detect this using IUIAutomationTextRange.GetAttributeValue(UIA_AnnotationTypesAttributeId) and looking for AnnotationType_SpellingError. (Strangely, if there are no annotation types, we get an IUnknown. Some comtypes weirdness?)

Unfortunately, it's nowhere near as simple as this because many (most?) of these apps use MSHTML and we don't use UIA there. I doubt there's a way to query this from MSHTML. I guess we'd have to find some way to use UIA just for MSHTML editable text.

@jcsteh
Copy link
Contributor

jcsteh commented Apr 1, 2016

Fixed as part of #4174 some time ago.

@jcsteh jcsteh closed this as completed Apr 1, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants