Reported by wmdcurran on 2014-02-11 02:34
api.setFocusObject currently generates a list of focus ancestors using the object's container property. Note that originally we used the parent property.
However, when the focus changes, in order to maintain state for common ancestors, the top object in the new list and the bottom object in the common list are joined via caching.
It seems though that when parent was changed to container, this part of the code was not updated. Therefore the parent property of the top object in the new list is set to the bottom object of the common list, yet the latter object is really the former object's container, not parent.
The easiest way this can be reproduced is in NVDA's browse mode Elements list.
Move to the top radio buttons and down arrow from links to headings. Look at the parent property of focusAnc[-2] in the Python console. It is the grouping (the correct container) but it should be the dialog.
Reported by wmdcurran on 2014-02-11 02:34
api.setFocusObject currently generates a list of focus ancestors using the object's container property. Note that originally we used the parent property.
However, when the focus changes, in order to maintain state for common ancestors, the top object in the new list and the bottom object in the common list are joined via caching.
It seems though that when parent was changed to container, this part of the code was not updated. Therefore the parent property of the top object in the new list is set to the bottom object of the common list, yet the latter object is really the former object's container, not parent.
The easiest way this can be reproduced is in NVDA's browse mode Elements list.
Move to the top radio buttons and down arrow from links to headings. Look at the parent property of focusAnc[-2] in the Python console. It is the grouping (the correct container) but it should be the dialog.