RFR: 8377428: VoiceOver Cursor Navigates Invisible Components
Jeremy Wood
jwood at openjdk.org
Mon Feb 9 21:25:14 UTC 2026
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
More information about the client-libs-dev
mailing list