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

Nikita Provotorov duke at openjdk.org
Fri Jun 16 20:37:10 UTC 2023


On Thu, 15 Jun 2023 15:58:18 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.
> 
> This fix results in few JCK test failure and that may require modification. I have filed an issue against JCK ([JCK-7319423](https://bugs.openjdk.org/browse/JCK-7319423)).  
> 
> CI link is posted in JBS.

Changes requested by NikitkoCent at github.com (no known OpenJDK username).

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

> 1119:     @Override
> 1120:     public int getAccessibleChildrenCount(JComponent c) {
> 1121:         return 2;

I think the logic here has to be equal to the logic in `getAccessibleChild `, otherwise `getAccessibleChildrenCount` returns 2 even when `getAccessibleChild(..., 1)` returns null.

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

> 1126:     public Accessible getAccessibleChild(JComponent c, int i) {
> 1127:         // 0 = the popup
> 1128:         // 1 = the editor

The comment here needs to be updated

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

> 1144:                         && (arrowButton instanceof Accessible)) {
> 1145:                     return (Accessible) arrowButton;
> 1146:                 }

How about to idiomatize the code a bit by using Java 14's enhanced `instanceof`?

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

PR Review: https://git.openjdk.org/jdk/pull/14497#pullrequestreview-1484328290
PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1232746895
PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1232741613
PR Review Comment: https://git.openjdk.org/jdk/pull/14497#discussion_r1232750667



More information about the client-libs-dev mailing list