Reported by jteh on 2008-11-01 04:04
r2435 stopped dialog text retrieval from descending into property pages. This was to avoid double speaking of the property page text if the focus was inside the property page (i.e. the property page was in the focus ancestry), as property pages read their own text. However, some applications such as NSIS display information in a property page, but the focus never lands inside that property page. Some way needs to be found to read the property page text in these cases.
The text was updated successfully, but these errors were encountered:
Comment 2 by jteh on 2008-12-10 01:50
I reverted the change in r2435 to avoid the annoying regression, but a better solution still needs to be found.
I did try several ideas:
Use events to read property pages with no focusable children.
Unfortunately, some property pages with no tabbable children still have the focusable state set on some of their children. Grrr!
The only event that seems to be fired by all applications is "show", but this is only fired when the property page changes. This means it wouldn't be read when switching back to the application, etc.
Only include the property page text in the text for the dialog if the property page isn't in the focus ancestors. (If it is in the focus ancestors, it will be read by focusEntered.)
Unfortunately, the foreground event sets focus to the dialog, so the property page isn't ever in the focus ancestors at that point. This means that this condition has no practical effect; we always get double speaking.
The solution must take both braille and speech into account. This probably means using NVDAObject properties such as description as we do now.
This makes things difficult because the property page is often not really a part of the dialog description, even though we do want it to be read. Consider the General property page of the Windows XP System Properties dialog.
One possibility is to not allow retrieval of dialog text for a property page if it's already been retrieved within a given period.
This is pretty nasty. Also, we really wnat it to be part of the property page if that is going to be read, not the dialog, but the dialog gets handled first.
Changed title from "Read property pages in dialogs even if the property page is never in the focus ancestry" to "Read property pages in dialogs even if the property page is never in the focus ancestry without doubling information"