-
Bug
-
Resolution: Unresolved
-
P4
-
8u20, 9
The first page in the Modena app has a panel with a very large list of controls, running voice over is tabbing to this panel causes VoiceOver to reply 'java busy' continuously.
What is happening is that VoiceOver is asking for the children for the panel, but the process of computing this list requires to traverse all the direct children and replace the ignored one by its decedents. See
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Accessibility/cocoaAXManipulateHierarchy/cocoaAXManipulateHier.html#//apple_ref/doc/uid/20001064-BCIGJBCF
This creates, for the panel in case, a list with over 800 elements.
I tried.
* Using accessibilityArrayAttributeCount and accessibilityArrayAttributeValues to access the children array, but these were not send by the OS.
* Use NSAccessibilityVisibleChildrenAttribute, again not used by the OS.
* Save (cache) the children array (the java long[] that is), no visible performance improvement.
* Save the NSArray, to avoid the long[] to NSArray in native code, no visible performance improvement.
So it seems the problem is not generating the children array but the time VoiceOver spends traversing the list poking each child.
See also: http://lists.apple.com/archives/accessibility-dev/2014/Jun/msg00011.html
What is happening is that VoiceOver is asking for the children for the panel, but the process of computing this list requires to traverse all the direct children and replace the ignored one by its decedents. See
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Accessibility/cocoaAXManipulateHierarchy/cocoaAXManipulateHier.html#//apple_ref/doc/uid/20001064-BCIGJBCF
This creates, for the panel in case, a list with over 800 elements.
I tried.
* Using accessibilityArrayAttributeCount and accessibilityArrayAttributeValues to access the children array, but these were not send by the OS.
* Use NSAccessibilityVisibleChildrenAttribute, again not used by the OS.
* Save (cache) the children array (the java long[] that is), no visible performance improvement.
* Save the NSArray, to avoid the long[] to NSArray in native code, no visible performance improvement.
So it seems the problem is not generating the children array but the time VoiceOver spends traversing the list poking each child.
See also: http://lists.apple.com/archives/accessibility-dev/2014/Jun/msg00011.html