RFR: 8361283: [Accessibility, macOS, VoiceOver] VoiceOver announced Tab items of JTabbedPane as RadioButton on macOS [v2]

Andrey Turbanov aturbanov at openjdk.org
Fri Jul 4 12:20:40 UTC 2025


On Wed, 2 Jul 2025 15:37:30 GMT, Abhishek Kumar <abhiscxk at openjdk.org> wrote:

>> **Issue** : VO doesn't announce Tab items of a JTabbedPane as RadioButton which is wrong. 
>> 
>> **Analysis** : That is due to the role mapping of tab items as `NSAccessibilityRadioButtonRole` in `JavaAccessibilityUtilities.m` file. Since the accessibility role description is fetched in `accessibilityRoleDescription` API if `CommonComponentAccessiblity.m` file, the sub-role passed as a parameter is `nil`, returned value is RadioButton..
>> 
>> **Proposed Fix** : Fix is to get the correct accessibility role description from Appkit, we should pass `NSAccessibilityTabButtonSubrole` in the subrole parameter and that returns the accessibility role as `Tab` and is announced correctly by VO.
>> 
>> **Testing** : Manual test case has been added to verify the fix.
>
> Abhishek Kumar has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add test

test/jdk/javax/accessibility/JTabbedPane/AccessibleTabbedPaneRoleTest.java line 74:

> 72:         tabPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
> 73:         tabPane.setTabPlacement(JTabbedPane.TOP);
> 74:         for( int i = 0; i < NUM_TABS; ++i) {

Suggestion:

        for (int i = 0; i < NUM_TABS; ++i) {

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26096#discussion_r2185219013


More information about the client-libs-dev mailing list