RFR: 8283214: [macos] Screen magnifier does not show the magnified text for JcomboBox [v5]

Sergey Bylokhov serb at openjdk.org
Thu Jul 20 01:46:48 UTC 2023


On Wed, 5 Jul 2023 17:45:35 GMT, Abhishek Kumar <abhiscxk at openjdk.org> wrote:

>> The issue exist only for non-editable combobox and the root cause is accessible object is not created due to incorrect index returned from component class which results in no a11y API invoked.
>> 
>> Proposed solution is to return the correct accessible child from getAccessibleChild method which is AquaComboBoxButton (arrowButton) instance and that results in invoking the a11y APIs to return the current selected item in combobox. 
>> 
>> Further when the application comes up first time the accessible name is not set for current displayed item in JCombobox that is handled in AquaComboBoxButton which will take care for the current selected item as well as if user modifies the selection by drop-down list.
>> 
>> CI link is posted in JBS.
>
> Abhishek Kumar has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add condition to check JLabel instance

src/java.desktop/macosx/classes/com/apple/laf/AquaComboBoxButton.java line 233:

> 231:         rendererPane.paintComponent(g, c, this, left, top, cWidth, height, shouldValidate); // h - (insets.top + insets.bottom) );
> 232: 
> 233:         // fix for 8283214

we usually do not mention the bugid in the comments, it can be found in the git history, just describe why it is needed.

src/java.desktop/macosx/classes/com/apple/laf/AquaComboBoxButton.java line 242:

> 240:                 ac.setAccessibleName(label.getText());
> 241:             }
> 242:         }

How it will work in other L&Fs?

src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java line 1133:

> 1131:                 if ( popup instanceof Accessible accessiblePopup) {
> 1132:                     AccessibleContext ac = accessiblePopup.getAccessibleContext();
> 1133:                     ac.setAccessibleParent(comboBox);

do we need to reset it back at some point?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1268840292
PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1268841214
PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1268842498



More information about the client-libs-dev mailing list