Re: VO interaction with lists
Re: VO interaction with lists
- Subject: Re: VO interaction with lists
- From: Gregory Hughes <email@hidden>
- Date: Fri, 16 Nov 2012 21:53:14 -0800
Are you implementing VisibleRows and VisibleChildren on the cell? Do the bounds all draw correctly if you use Accessibility Inspector?
On Nov 16, 2012, at 9:38 PM, Pete Brunet <email@hidden> wrote:
>
> On 11/16/12 4:56 PM, Pete Brunet wrote:
>> For my simple JavaFX list currently VO says: row 1, column 1, cell. It
>> appears I am giving VO everything it wants but it is not saying the
>> right thing. In Finder there is a list and for it I hear: List, 1 item
>> selected, <the title>, selected, rich text format, <the item number> of
>> <the total number of items>.
>>
>> The tree looks like this: AXGroup, AXList, 19 AXCells, each of which has
>> an AXTextField. Both the AXCells and AXTextFields have AXTitle of "Row
>> A". Only the first text field is queried for information. VO asks it
>> for AXRole, AXRoleDescription, AXTitle, AXSize, AXPosition, AXEnabled,
>> AXParent, all of which I am returning valid data for. (It's interesting
>> that VO doesn't ask it for its children, though there are none.)
> Correction: The first AXCell and AXTextField child have AXTitles of "Row
> A". The rest all have titles too but they are different.
>>
>> What am I doing wrong?
>>
>> Pete
>>
>> On 11/6/12 10:45 AM, Pete Brunet wrote:
>>> H Gregory, I implemented
>>> accessibilityArrayAttributeValues:index:maxCount: which helped a lot,
>>> but VO still calls for all the list items way too many times. The code
>>> probably wasn't in a loop before, I probably just wasn't patient
>>> enough. BTW, I see no indication that our a11y tree has any issues.
>>>
>>> I still have more work to do for our list implementation but first I'd
>>> like to find a Mac list so I can see how VO handles it. I went through
>>> all the widgets in System Preferences and could not find a list. I
>>> found several single column tables but no lists. Where can I find a
>>> real list? And further, where can I find a suite of Mac GUI control
>>> samples that includes all the possible Mac GUI controls?
>>>
>>> Thanks, Pete
>>>
>>> On 10/16/12 7:08 PM, Gregory Hughes wrote:
>>>> I am not sure offhand why you are seeing an infinite loop of requests, it is possible that you have a palindrome error in your accessibility tree.
>>>>
>>>> However, you should also consider implementing this method to improve performance rather than constantly returning the entire array:
>>>> https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSAccessibility_Protocol/Reference/Reference.html#//apple_ref/occ/instm/NSObject/accessibilityArrayAttributeValues:index:maxCount:
>>>>
>>>> This may also help you hunt down a palindrome error.
>>>>
>>>> -G
>>>>
>>>>
>>>> On Oct 13, 2012, at 12:00 PM, email@hidden wrote:
>>>>> Message: 1
>>>>> Date: Fri, 12 Oct 2012 17:01:10 -0500
>>>>> From: Pete Brunet <email@hidden>
>>>>> To: Accessibility-Dev Accessibility-Dev Mail
>>>>> <email@hidden>
>>>>> Subject: VO interaction with lists
>>>>> Message-ID: <email@hidden>
>>>>> Content-Type: text/plain; charset=ISO-8859-1
>>>>>
>>>>> 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
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> Accessibility-dev mailing list
>>>>> email@hidden
>>>>> https://lists.apple.com/mailman/listinfo/accessibility-dev
>>>>>
>>>>> End of Accessibility-dev Digest, Vol 9, Issue 83
>>>>> ************************************************
>>>> _______________________________________________
>>>> 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
>>> _______________________________________________
>>> 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
>> _______________________________________________
>> 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
>
> _______________________________________________
> 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
_______________________________________________
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