Keep input caret at the end when JS sets value after focus - #61575
Draft
chromium-wpt-export-bot wants to merge 1 commit into
Draft
Keep input caret at the end when JS sets value after focus#61575chromium-wpt-export-bot wants to merge 1 commit into
chromium-wpt-export-bot wants to merge 1 commit into
Conversation
Setting input.value removes the old inner text node and creates a new one, collapsing the live DOM selection to offset 0. SelectionChanged() then cached that 0 even while unfocused (where the cache is authoritative), so a mouse-release notification moved the caret to the start on the next focus. Only refresh the cache from the live selection while the control is focused. This is guarded by the PreserveUnfocusedSelectionCache runtime flag (enabled by default) so it can be disabled if problems arise. Bug: 40884623 Change-Id: I6daf4b7ade20a56428784992dd5466bf1766bb8f
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Setting input.value removes the old inner text node and creates a new
one, collapsing the live DOM selection to offset 0. SelectionChanged()
then cached that 0 even while unfocused (where the cache is
authoritative), so a mouse-release notification moved the caret to
the start on the next focus.
Only refresh the cache from the live selection while the control is
focused. This is guarded by the PreserveUnfocusedSelectionCache runtime
flag (enabled by default) so it can be disabled if problems arise.
Bug: 40884623
Change-Id: I6daf4b7ade20a56428784992dd5466bf1766bb8f
Reviewed-on: https://chromium-review.googlesource.com/8143064
WPT-Export-Revision: 7207e963cfdc63ccd0f2ed856f0d10e2d54f97b0