Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Roles not spoken for certain focused objects when role property called in chooseNVDAObjectOverlayClasses #2569
Reported by jteh on 2012-07-30 10:43
This also happens for Scintilla editor controls.
I suspect this is because the role gets cached on the instance during the choosing of overlay classes and the cache isn't invalidated until the next core cycle. However, role is overridden by the overlay classes, thus making the cached value incorrect. To solve this, we could simply invalidate the cache after applying overlay classes. This would unfortunately often cause more cross-process calls, but I'm not sure there's anything else we can do to fix this.
Comment 1 by jteh on 2012-07-31 07:54
To generalise, the problem occurs when properties fetched before overlay classes are applied call other properties in the same object which get changed after overlay classes are applied.
The solution is to introduce another type of caching which gets invalidated after choosing overlay classes. This way, properties that call other properties (such as role) can be invalidated, while properties (such as IAcccessibleRole) that are lower level don't have to be invalidated.
Comment 2 by jteh on 2012-08-03 03:18