Ticket #16 (closed defect: fixed)
IAccessibles are needlessly being created for some cases of IAccessible NVDA object next/previous/firstChild/children properties
| Reported by: | mdcurran | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 2009.1 |
| Component: | Core | Version: | development |
| Keywords: | accNavigate, accessibleChildren, accFocus, next, previous, firstChild | Cc: | |
| Operating system: | Blocked by: | ||
| Blocking: |
Description
MSAA accNavigate returns either an IAccessible pointer, or a childID. NVDA's IAccessibleHandler wraps these functions but makes them return (IAccessiblePointer,childID) each time,r ather than just one or the other. The issue with this is that when an IAccessible NVDA object calls accNavigate to go next/previous/firstChild, it receives back both IAccessiblePointer and childID, and then uses complex and sometimes time consuming logic to work out whether or not this is a good move, as in are we in a window, are we jumping to another one etc. Its also posible that a long the line another IAccessiblePointer is being created for the final NVDA object when it may not have to be. If accNavigate just returned either the childID or IAccessiblePointer, but not both, NVDA objects could suppress the complex logic if only the child ID changed, as the old IAccessiblePointer clearly can be used. This also goes for MSAA AccessibleChildren?, in that NVDA wraps this function so it returns a list of IAccessiblePointer,childID pares, really it should return just a list of either IAccessiblePointers, or childIDs, but not pares of both. This change should also apply to the IAccessible accFocus property.


NVDA is developed by