Fix screen reader box positioning for multi-line selections on macOS VoiceOver #252343
+5
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes an accessibility issue where the screen reader box (edit context hidden element) was incorrectly positioned when selecting multiple lines on macOS VoiceOver.
Problem
When users made multi-line selections using macOS VoiceOver, the screen reader box was positioned at the left edge of the editor content area instead of at the actual start of the selection. This caused confusion for screen reader users as the announced position didn't match the visual selection.
Root Cause
The
_updateSelectionAndControlBounds
method innativeEditContext.ts
handled positioning differently for empty selections (cursor) vs non-empty selections:ctx.visibleRangeForPosition(viewSelection.getStartPosition())
parentBounds.left + contentLeft - scrollLeft
(content area edge)Solution
The fix ensures both empty and non-empty selections use the same positioning logic:
Impact
Testing
Fixes #230108.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
electronjs.org
node-gyp
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.