This PR prevents VoiceOver from letting me navigate the VoiceOver cursor to 
hidden components.

### Technical Details

VoiceOver is responsible for a call to 
`CAccessibility.getChildrenAndRoles(JFrame, JFrame, JAVA_AX_ALL_CHILDREN, 
false)`.

That last boolean is `allowIgnored`.

When `allowedIgnored == false` we already omitted certain components based on 
their AccessibleRole. This PR expands our definition of "what should be 
ignored" to include invisible Components.

### Other Considerations

1. Originally I thought the resolution to this problem would be to change 
JAVA_AX_ALL_CHILDREN to JAVA_AX_VISIBLE_CHILDREN . And maybe that's still a 
viable option, but after some research I've come to believe it's 
simpler/appropriate to change our definition of "ignored".
2. NSViews have a separate property `isHidden`. Another approach to this ticket 
might be to try to assign `myNSView.isHidden = !myJavaComponent.isVisible()`. 
Some reading suggests that this might (?) automatically resolve this ticket.

-------------

Commit messages:
 - 8377428: code cleanup for PR
 - 8377428: add TestVoiceOverHiddenComponentNavigation
 - 8377428: don't include non-visible components

Changes: https://git.openjdk.org/jdk/pull/29630/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29630&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377428
  Stats: 133 lines in 2 files changed: 125 ins; 0 del; 8 mod
  Patch: https://git.openjdk.org/jdk/pull/29630.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29630/head:pull/29630

PR: https://git.openjdk.org/jdk/pull/29630

Reply via email to