Accessibility Zoom Speak Items Under Mouse Line-by-Line Support
Accessibility Zoom Speak Items Under Mouse Line-by-Line Support
- Subject: Accessibility Zoom Speak Items Under Mouse Line-by-Line Support
- From: Charlie Powell <email@hidden>
- Date: Thu, 31 Mar 2016 18:55:05 +0000
- Thread-topic: Accessibility Zoom Speak Items Under Mouse Line-by-Line Support
Hi all,
I'm looking at the functionality of the system zoom accessibility feature, specifically the piece around "Speak items under the mouse after delay" (System Preferences -> Accessibility -> Zoom -> set style to Picture-in-Picture -> More Options -> Speak items under mouse after delay). I notice that in web-based apps like Mail.app, when the mouse moves to a new line of text in the canvas, the system will read just that line of text to the user. In seemingly every other app (TextEdit, Pages, or even a sample app with just NSTextView) the system will read the entire content of the canvas instead of one line at a time.
Looking at Mail.app under Accessibility Inspector, I see that each line of text is actually represented as an AXGroup with a single AXStaticText element underneath the AXWebArea that has focus when editing. That seems somewhat counterintuitive to me as VoiceOver doesn't seem to encounter these elements - you can't use VO+Shift+Down arrow to interact with the AXWebArea and find these individual elements. At the same time, if I enable VoiceOver and change my mouse pointer navigation preference to "Moves VoiceOver cursor" (under VoiceOver Utility -> Navigation -> Mouse pointer), VoiceOver seems to find each line individually. Again, I only see this behavior in web-based apps like Mail.app, Safari, etc. and not Pages, TextEdit, or NSTextView.
Based on my observations, it seems that when speak items under mouse is enabled, the system will perform accessibilityHitTest: to find the relevant accessibility element, followed by asking that element for its accessibilityValue. So in the case of non-web controls, the pattern seems to be to have a single accessibility element for all the text in the canvas, hence why the system reads the entire content of that element. In the case of Mail.app, the hit testing appears to find these individual AXGroup/AXStaticText elements and reads those instead.
Has anyone ever run into this problem before? It is expected that only things using web views get this support and other controls don't? If I'm not using a web view, does anyone know how we would need to structure our accessibility hierarchy in order to achieve this line-by-line behavior without also breaking normal VoiceOver navigation?
Thanks,
Charlie
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Accessibility-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden