-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Fix AccessibilityInfo.announceForAccessibility not working in playground-win32 solution #8248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix AccessibilityInfo.announceForAccessibility not working in playground-win32 solution #8248
Conversation
packages/playground/windows/playground-win32/Playground-Win32.cpp
Outdated
Show resolved
Hide resolved
| rootElement.SetValue( | ||
| winrt::Windows::UI::Xaml::Automation::AutomationProperties::LandmarkTypeProperty(), | ||
| winrt::box_value(80002)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should not be needed if you do the first API call. This is a fallback in cases where you don't have an accessible root. Narrator may not behave "as well" when setting landmark type this way, so prefer using just the xaml root.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I verified this is needed (or maybe I'm missing something about your comment?). If I delete this then Narrator doesn't announce anything when trying the AccessibilityInfo example in playground-win32 RNTester. This also aligns with what's mentioned in #7290:
AccessibleXamlRoots must be able to create an automation peer or need to set AutomationProperties::LandmarkTypeProperty() to 80002.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lyahdav what is the concrete type of the thing that you pass to SetAccessibleXamlRoot ? it needs to be one of the FrameworkElement derived types that is associated with the list of derived types in this page:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per https://github.com/microsoft/react-native-windows/blob/main/packages/playground/windows/playground-win32/Playground-Win32.cpp#L366 this is a Grid. From what you linked there is no GridAutomationPeer. At the point we SetAccessibleRoot we only have that control available. So what makes sense, to set LandmarkTypeProperty or to create some other dummy control? LandmarkTypeProperty seems cleaner.
…und-win32 solution
4c20e72 to
ab92aaa
Compare
chiaramooney
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Per #7290 these changes are required. I confirmed that the Playground-win32 announceForAccessibility example now works with this change.
Microsoft Reviewers: Open in CodeFlow