RFR: 8348936: [Accessibility,macOS,VoiceOver] VoiceOver doesn't announce untick on toggling the checkbox with "space" key on macOS

Abhishek Kumar abhiscxk at openjdk.org
Wed Feb 5 06:47:10 UTC 2025


On Tue, 4 Feb 2025 16:15:47 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> VoiceOver doesn't announce the _untick state_ when Checkbox is `deselected` using **space** key. When CheckBox is deselected, the state change is not notified to a11y client (VoiceOver) and so the state is not announced by VO. 
>> 
>> Screen Magnifier is also unable to magnify the unchecked state of JCheckBox due to same reason and is captured as separate bug [JDK-8345728](https://bugs.openjdk.org/browse/JDK-8345728).
>> 
>> Proposed fix is to send the state change notification to a11y client when checkbox is deselected, this resolves the problem for VoiceOver and Screen Magnifier.
>> 
>> Similar issue observed for JToggleButton. So, I extended the fix for JToggleButton as well.
>> 
>> The proposed change can be verified the manual test in the PR.
>> 
>> CI pipeline testing is `OK`, link posted in JBS.
>
> src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessible.java line 212:
> 
>> 210:                     // Do send toggle button state changes to native side
>> 211:                     if (thisRole == AccessibleRole.TOGGLE_BUTTON) {
>> 212:                         if ((newValue != null && !newValue.equals(oldValue)) ||
> 
> I believe the new condition should be used for `RADIO_BUTTON` too:
> 
> https://github.com/openjdk/jdk/blob/b985347c2383a7a637ffa9a4a8687f7f7cde1369/src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessible.java#L197-L200

RadioButtons are mostly used in a group out of which only one can be selected at a time and the selected state is well notified to VO. When another RadioButton is selected from the group, previously selected RadioButton is de-selected and currently selected RadioButton's value is notified to VO.

Don't think RadioButton can be used stand-alone.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23436#discussion_r1942325127


More information about the client-libs-dev mailing list