RFR: 8286258: [Accessibility, macOS, VoiceOver] VoiceOver reads the spinner value wrong and sometime partially
Dmitry Drobotov
duke at openjdk.org
Wed Jan 21 13:53:38 UTC 2026
On Wed, 14 Jan 2026 20:18:08 GMT, Alexander Zuev <kizune at openjdk.org> wrote:
> The issue with the announcement of the custom spin boxes is that the text field inside when the value is being changed by the spinbox data model generates some events that are being interpreted by the accessibility subsystem as if text is being actively edited and the system tries to announce it accordingly. In order to stop it from happening we are going to generate correct events and temporarily suppress the text field's methods that reporting the editing-related changes until the actual editing is happened.
>
> Make embedded text field not to generate random edit-related events;
> Add manual test case;
I also checked this patch in IntelliJ and it fixed this issue with our spinners as well.
src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m line 89:
> 87: if ([child conformsToProtocol:@protocol(NSAccessibilityNavigableStaticText)]) {
> 88: NSAccessibilityPostNotification(child, NSAccessibilityLayoutChangedNotification);
> 89: NSAccessibilityPostNotification(child, NSAccessibilityAnnouncementRequestedNotification);
I assume this line is not necessary, `NSAccessibilityAnnouncementRequestedNotification` is used to make VoiceOver announce an arbitrary string, which would be passed in `userInfo` argument for `NSAccessibilityPostNotificationWithUserInfo`.
-------------
PR Review: https://git.openjdk.org/jdk/pull/29235#pullrequestreview-3687337651
PR Review Comment: https://git.openjdk.org/jdk/pull/29235#discussion_r2712651332
More information about the client-libs-dev
mailing list