VO interaction with lists
VO interaction with lists
- Subject: VO interaction with lists
- From: Pete Brunet <email@hidden>
- Date: Fri, 12 Oct 2012 17:01:10 -0500
I'm adding support for NSAccessibility to JavaFX. We have it working
for button, radiobutton, and checkbox and I'm now working on a simple
list. I have a test case with a list of 20 cells each containing simple
text. A log of the calls from VO are listed below. When I run the test
case I have to stop it after a while because I'm not sure it will ever
finish. Below is a log of the calls from VO. Some questions:
- Why does VO ask for the same info over and over, especially for time
consuming operations like the children.
- What if the list is huge? VO isn't asking for the visible children,
but for all the children. (Fortunately, at this early point we only
have the visible children in our accessibility tree.)
- Why doesn't VO ever ask for the child of the cell?
- Why does VO never seem to get far enough along to actually speak the
first list item?
Thanks, Pete
There might be a little misinformation in the following. It was a lot
of data to wade though, but it should be accurate enough to see the issues.
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXTitle self=0x7fe803d36190 returning: nil
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning
0x7fe803d1ca20 0x7fe803d36cd0 0x7fe803d36d00 0x7fe803d36d30 0x7fe803d36d60
0x7fe803d36d90 0x7fe803d36dc0 0x7fe803d36df0 0x7fe803d36e20 0x7fe803a4f8e0
0x7fe803a44360 0x7fe803a0bc30 0x7fe803a44640 0x7fe803a1b2a0 0x7fe803d36e60
0x7fe803d36e90 0x7fe803d36ec0 0x7fe803d36ef0 0x7fe803d36f20 0x7fe803e0e260
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
ditto through all 20 children
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36d00 returning AXCell // role of third child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d30 returning 0x7fe803d36190 // parent of
forth child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36d30 returning AXCell // role of forth child
ditto for all 20 children
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXTitle self=0x7fe803d1ca20 returning Row 1 // title of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXTitle self=0x7fe803d36cd0 returning Row 2 // title of second child
same as above through row 20
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803e0e260 returning AXCell // role of last child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
XParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
XParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803e0e260 returning AXCell // role of last child
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXTitle self=0x7fe803e0e260 returning nil // title of last child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRoleDescription self=0x7fe803d1ca20 returning cell // role
description of first child
same through 20 role descriptions
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXTitle self=0x7fe803d36190 returning: nil // title of list
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
ditto through 20 children
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803e0e260 returning AXCell // role of last child
AXParent self=0x7fe803e0e260 returning 0x7fe803d36190 // parent of last
child
AXChildren self=0x7fe803d36190 returning as above
AXRoleDescription self=0x7fe803d1ca20 returning cell // role
description of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXRole self=0x7fe803d36190 returning: AXList
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXTitle self=0x7fe803d36190 returning: nil
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
ditto through 20 children
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXTitle self=0x7fe803d36190 returning: nil // title of list
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36d00 returning 0x7fe803d36190 // parent of
third child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36d00 returning AXCell // role of third child
ditto through 20 children
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d1ca20 returning AXCell // role of first child
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXTitle self=0x7fe803d1ca20 returning Row 1 // title of first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d1ca20 returning 0x7fe803d36190 // parent of
first child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
XParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXChildren self=0x7fe803d36190 returning as above
AXRole self=0x7fe803d36cd0 returning AXCell // role of second child
AXParent self=0x7fe803d36cd0 returning 0x7fe803d36190 // parent of
second child
AXParent self=0x7fe803d36190 returning 0x7fe803d35b70
AXChildren self=0x7fe803d36190 returning as above
AXTitle self=0x7fe803d36cd0 returning Row 2 // title of second child
ditto through 20 children
stopped the app somewhere in that loop; running too long
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Accessibility-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden