RFR: 8348936: [Accessibility,macOS,VoiceOver] VoiceOver doesn't announce untick on toggling the checkbox with "space" key on macOS
Artem Semenov
asemenov at openjdk.org
Tue Feb 4 13:27:11 UTC 2025
On Tue, 4 Feb 2025 10:58:20 GMT, Abhishek Kumar <abhiscxk 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 186:
> 184: if (thisRole == AccessibleRole.CHECK_BOX) {
> 185: if ((newValue != null && !newValue.equals(oldValue)) ||
> 186: oldValue != null && !oldValue.equals(newValue)) {
At first glance, these conditions look like the same thing. equals() above will return false if oldValue is null. oldValue.equals(newValue) and newValue.equals(oldValue) are also the same thing. Try to rewrite this condition more clearly.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23436#discussion_r1941160719
More information about the client-libs-dev
mailing list