-
Notifications
You must be signed in to change notification settings - Fork 8.4k
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
Properly represent block selections in UIA #4991
Conversation
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.
Looks great to me. Thanks!
@msftbot merge this in 5 minutes |
Hello @DHowett-MSFT! Because you've given me some instructions on how to help merge this pull request, I'll be modifying my merge approach. Here's how I understand your requirements for merging this pull request:
If this doesn't seem right to you, you can tell me to cancel these instructions and use the auto-merge policy that has been configured for this repository. Try telling me "forget everything I just told you". |
## Summary of the Pull Request Block selections were always read and displayed as line selections in UIA. This fixes that. ## PR Checklist * [x] Closes #4509 ## Detailed Description of the Pull Request / Additional comments 1. Expose `IsBlockSelection()` via IUiaData 2. Update the constructor to be able to take in a block selection parameter 3. Make ScreenInfoUiaProviders pass step 1 output into step 2 constructor 4. Update all instances of `UiaTextRange::GetTextRects()` to include this new flag ## Validation Steps Performed Manually tested. Additional tests would be redundant as GetTextRects() is tested in the text buffer.
The scroll locking rework that landed with the DxRenderer's partial invalidation change introduced a deadlock. UIA locks the buffer for reading before asking it to scroll (which now requires a write lock.) Scrolling is probably _okay_ to have a little bit of torn state that might arise from us unlocking the read lock early before triggering the write lock down the line. While investigating this, I also noticed that our bounding rects stopped being viewport-relative (and were instead buffer-relative.) That regressed with the switch to `GetTextRects` in #4991 ## PR Checklist * [ ] Closes (issues noticed in investigating the DPI changes) * [x] CLA signed. * [ ] Tests added/passed * [ ] Requires documentation to be updated * [x] Core contributor badge ## Validation Steps Performed Manual pass with inspect.exe
🎉 Handy links: |
Summary of the Pull Request
Block selections were always read and displayed as line selections in UIA. This fixes that.
PR Checklist
Detailed Description of the Pull Request / Additional comments
IsBlockSelection()
via IUiaDataUiaTextRange::GetTextRects()
to include this new flagValidation Steps Performed
Manually tested.
Additional tests would be redundant as GetTextRects() is tested in the text buffer.