Skip to content
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

Reduce CursorChanged Events for Accessibility #5196

Merged
6 commits merged into from
Apr 1, 2020
Merged

Conversation

carlos-zamora
Copy link
Member

Summary of the Pull Request

Reduce the number of times we dispatch a cursor changed event. We were firing it every time the renderer had to do anything related to the cursor. Unfortunately, blinking the cursor triggered this behavior. Now we just check if the position has changed.

PR Checklist

Validation Steps Performed

Verified using Narrator
Also verified #3791 still works right

@carlos-zamora carlos-zamora added the Area-Accessibility Issues related to accessibility label Mar 31, 2020
@@ -246,7 +255,6 @@ UiaEngine::UiaEngine(IUiaEventDispatcher* dispatcher) :
_selectionChanged = false;
_textBufferChanged = false;
_cursorChanged = false;
_prevSelection.clear();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

???

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wots all this then eh

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I realized, why should we clear the previousSelection between frames? If it's clear when we render a new frame, we'll always have the selection be "new". So, this should reduce the number of times we send a selection event too.

@codeofdusk
Copy link
Contributor

It seems that Azure CI doesn't provide artefacts for PRs. Could you please upload (or point me at) a build for testing?

@carlos-zamora
Copy link
Member Author

It seems that Azure CI doesn't provide artefacts for PRs. Could you please upload (or point me at) a build for testing?

Your best bet would be that you have to build the branch yourself. I tried uploading a ZIP of the package but GitHub said it was too large. I'm merging this change into master now, though, so let us know if you encounter any issues.

@carlos-zamora carlos-zamora added the AutoMerge Marked for automatic merge by the bot when requirements are met label Apr 1, 2020
@ghost
Copy link

ghost commented Apr 1, 2020

Hello @carlos-zamora!

Because this pull request has the AutoMerge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (@msftbot) and give me an instruction to get started! Learn more here.

@ghost ghost merged commit f8227e6 into master Apr 1, 2020
@ghost ghost deleted the dev/cazamor/acc/opt-cursor branch April 1, 2020 15:56
@codeofdusk
Copy link
Contributor

Working great with NVDA, thanks!

As an aside, it doesn't look like the .msix packages from Azure are installable. Renaming to .zip and extracting allows me to run the terminal/console, but just opening the package gives me an error that the package isn't signed. Is there any way to disable the signature check? Developer mode is enabled on my machine.

@DHowett-MSFT
Copy link
Contributor

Unfortunately, that's one of the huge pain points with this project on the development side. There's no way to turn off signature checking, even for locally-installed locally-produced packages 😦

Sometimes it's just easier to extract the msix like a zip file and run WindowsTerminal.exe out of it. We haven't broken that, and we do sorta try to make sure it doesn't break. 😄

@DHowett-MSFT
Copy link
Contributor

Thanks again for testing. There's probably something we can do to make this more palatable.

DHowett-MSFT pushed a commit that referenced this pull request Apr 14, 2020
## Summary of the Pull Request
Reduce the number of times we dispatch a cursor changed event. We were firing it every time the renderer had to do anything related to the cursor. Unfortunately, blinking the cursor triggered this behavior. Now we just check if the position has changed.

## PR Checklist
* [X] Closes #5143


## Validation Steps Performed
Verified using Narrator
Also verified #3791 still works right
DHowett-MSFT pushed a commit that referenced this pull request Apr 21, 2020
Improve wide glyph support in UIA (GH-4946)
Add enhanced key support for ConPty (GH-5021)
Set DxRenderer non-text alias mode (GH-5149)
Reduce CursorChanged Events for Accessibility (GH-5196)
Add more object ID tracing for Accessibility (GH-5215)
Add SS3 cursor key encoding to ConPty (GH-5383)
UIA: Prevent crash from invalid UTR endpoint comparison (GH-5399)
Make CodepointWidthDetector::GetWidth faster (CC-3727)
add til::math, use it for float conversions to point, size (GH-5150)
Add support for renderer backoff, don't FAIL_FAST on 3x failures, add UI (GH-5353)
Fix a deadlock and a bounding rects issue in UIA (GH-5385)
Don't duplicate spaces from potentially-wrapped EOL-deferred lines (GH-5398)
Reimplement the VT tab stop functionality (CC-5173)
Clamp parameter values to a maximum of 32767. (CC-5200)
Prevent the cursor type being reset when changing the visibility (CC-5251)
Make RIS switch back to the main buffer (CC-5248)
Add support for the DSR-OS operating status report (CC-5300)
Update the virtual bottom location if the cursor moves below it (CC-5317)
ci: run spell check in CI, fix remaining issues (CC-4799) (CC-5352)
Set Cascadia Code as default font (GH-5121)
Show a double width cursor for double width characters (GH-5319)
Delegate all character input to the character event handler (CC-4192)
Update til::bitmap to use dynamic_bitset<> + libpopcnt (GH-5092)
Merged PR 4465022: [Git2Git] Merged PR 4464559: Console: Ingest OSS changes up to e055079
Correct scrolling invalidation region for tmux in pty w/ bitmap (GH-5122)
Render row-by-row instead of invalidating entire screen (GH-5185)
Make conechokey use ReadConsoleInputW by default (GH-5148)
Manually pass mouse wheel messages to TermControls (GH-5131)
This fixes C-M-space for WSL but not for Win32, but I'm not sure there's a problem in Win32 quite yet. (GH-5208)
Fix copying wrapped lines by implementing better scrolling (GH-5181)
Emit lines wrapped due to spaces at the end correctly (GH-5294)
Remove unneeded whitespace (CC-5162)
@ghost
Copy link

ghost commented Apr 22, 2020

🎉Windows Terminal Preview v0.11.1121.0 has been released which incorporates this pull request.:tada:

Handy links:

@ghost ghost mentioned this pull request Apr 22, 2020
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Accessibility Issues related to accessibility AutoMerge Marked for automatic merge by the bot when requirements are met
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Accessibility: jumps in review
4 participants