-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Adding UIA support for ScrollBar #5044
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
Adding UIA support for ScrollBar #5044
Conversation
010cdd0 to
000e188
Compare
RussKie
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.
Similar comments as for #4939
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarChildAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarChildAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/VScrollBar.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/HScrollBar.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarAccessibleObject.cs
Outdated
Show resolved
Hide resolved
...em.Windows.Forms/tests/IntegrationTests/MauiTests/MauiVScrollBarTests/MauiVScrollBarTests.cs
Outdated
Show resolved
Hide resolved
...em.Windows.Forms/tests/IntegrationTests/MauiTests/MauiVScrollBarTests/MauiVScrollBarTests.cs
Outdated
Show resolved
Hide resolved
...indows.Forms/tests/UnitTests/AccessibleObjects/HScrollBar.HScrollBarAccessibleObjectTests.cs
Outdated
Show resolved
Hide resolved
...indows.Forms/tests/UnitTests/AccessibleObjects/HScrollBar.HScrollBarAccessibleObjectTests.cs
Outdated
Show resolved
Hide resolved
...indows.Forms/tests/UnitTests/AccessibleObjects/HScrollBar.HScrollBarAccessibleObjectTests.cs
Outdated
Show resolved
Hide resolved
000e188 to
9d38076
Compare
6e9596d to
9235595
Compare
9235595 to
f7e6986
Compare
5fef8a5 to
b939998
Compare
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarChildAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarChildAccessibleObject.cs
Outdated
Show resolved
Hide resolved
Tanya-Solyanik
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.
added some questions about Enabled UIA property.
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarChildAccessibleObject.cs
Outdated
Show resolved
Hide resolved
...Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarFirstLineButtonAccessibleObject.cs
Outdated
Show resolved
Hide resolved
...Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarFirstPageButtonAccessibleObject.cs
Outdated
Show resolved
Hide resolved
src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarThumbAccessibleObject.cs
Outdated
Show resolved
Hide resolved
....Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarLastPageButtonAccessibleObject.cs
Outdated
Show resolved
Hide resolved
....Windows.Forms/src/System/Windows/Forms/ScrollBar.ScrollBarLastLineButtonAccessibleObject.cs
Outdated
Show resolved
Hide resolved
b939998 to
af89ba5
Compare
af89ba5 to
c175e77
Compare
421fcd2 to
6558e76
Compare
|
Also make sure it runs locally: |
08e7ce3 to
7228e67
Compare
7228e67 to
cccd876
Compare
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.
Is IsDisplayed test copied from the previous implementation?
Is it possible to Invoke this object in the previous implementation when this button is not displayed?
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.
In this case, the IsDisplayed flag, in addition to the fact that the element is invisible, means that the trackbar already has a minimum/maximum value and calling the Invoke method for element will not lead to any action.
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.
Could you please share an image of visual element that owns this accessible object?
IsDisplayed property seems to be very similar to Enabled, but I don't see why we would not want to navigate from a disabled element to its siblings....
How is navigation handled by the MSAA proxy?
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 have investigated this case and found that if the element is invisible, than FragmentNavigate(NavigateDirection.Parent) method returns Parent correctly, but FragmentNavigate(NavigateDirection.NextSibling) and FragmentNavigate(NavigateDirection.PreviousSibling) methods return null value.
I fixed this case for ScrollBar and updated the tests. I also fixed this case for TrackBar.
The IsDisplayed property means that the ScrollBar has a minimum / maximum value. Therefore this element is invisible and does not require user interaction.
|
@DmitryGorokhov - see the before/after screenshots and red/green highlights to see when MSAA proxy is used and when our custom providers are |
8824ba6 to
a5544c9
Compare
Updated "SupportsUiaProviders" flag. Added and implemented ScrollBar accessible objects Added unit and MAUI tests. Fixed "TrackBar.FragmentNavigate" method. Fixed unit tests
a5544c9 to
c95b8b4
Compare
|
Approved by CTI team |

Fixes #4983
Proposed changes
Customer Impact
Before fix:

Accessibility providers:
[pid:10384,providerId:0x811196 Main:Nested [pid:10832,providerId:0x811196 Main(parent link):Microsoft: MSAA Proxy (unmanaged:UIAutomationCore.dll)]; Hwnd(parent link):Microsoft: HWND Proxy (unmanaged:uiautomationcore.dll)]Afrer fix:

Accessibility providers:
[pid:30620,providerId:0xD1472 Main:Nested [pid:52468,providerId:0xD1472 Main(parent link):Unidentified Provider (unmanaged:coreclr.dll)]; Hwnd(parent link):Microsoft: HWND Proxy (unmanaged:uiautomationcore.dll)]Regression?
Risk
Test methodology
Accessibility testing
Test environment(s)
Microsoft Reviewers: Open in CodeFlow