-
Notifications
You must be signed in to change notification settings - Fork 29.7k
[web] Fix multiline input selection in Chrome. #168217
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
[web] Fix multiline input selection in Chrome. #168217
Conversation
|
Hi @justinmc, yesterday you asked me about this selection bug. Tagging you to keep you updated. |
mdebbar
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.
Thanks for fixing this issue!
Other than the naming issue, this PR looks good to me.
| final DomElement? eventTargetElement = event.target as DomElement?; | ||
| final DomElement actualTargetElement = eventTarget as DomElement; |
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.
The names here are becoming confusing lol. What do you think about something like this:
| final DomElement? eventTargetElement = event.target as DomElement?; | |
| final DomElement actualTargetElement = eventTarget as DomElement; | |
| final DomElement? originalTarget = event.target as DomElement?; |
And leave eventTarget as is.
mdebbar
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.
Hi @mdebbar, thanks a lot for the review! |
flutter/flutter@336a7ec...0b9f928 2025-05-14 [email protected] Fix Linux Impeller support broken by incorrect deletion of stencil buffer. (flutter/flutter#168668) 2025-05-14 [email protected] Roll Fuchsia Linux SDK from 6J81agNhuK4q255Jj... to fSvuEJgRmHxnewRJr... (flutter/flutter#168794) 2025-05-14 [email protected] Run `{Platform} flutter_packaging` builders on release candidates. (flutter/flutter#168762) 2025-05-14 [email protected] Remove `docs_deploy_beta`, fix `docs_publish`, add comments. (flutter/flutter#168754) 2025-05-14 [email protected] Add `titleAlignment` to `CheckboxListTile` and `RadioListTile` (flutter/flutter#168666) 2025-05-14 [email protected] Remove deprecated todo about caching (flutter/flutter#168534) 2025-05-13 [email protected] Replace hardcoded host and app level build.gradle paths with `AndroidProject`-level getters in `gradle_errors.dart` (flutter/flutter#167949) 2025-05-13 [email protected] Improve documentation for KeyedSubtree constructor (flutter/flutter#167198) 2025-05-13 [email protected] Wire up the system text scaler from `PlatformDispatcher` (flutter/flutter#159999) 2025-05-13 [email protected] Roll Dart SDK from 645d04a7a964 to b3520981e0f0 (3 revisions) (flutter/flutter#168721) 2025-05-13 [email protected] [a11y] Semanctis flag refactor step 3: framework part (flutter/flutter#167771) 2025-05-13 [email protected] Remove/replace the `team` label with `c: contributor-productivity`. (flutter/flutter#168702) 2025-05-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (#168510)" (flutter/flutter#168775) 2025-05-13 [email protected] Use live region in error text input decorator for Android (flutter/flutter#165531) 2025-05-13 [email protected] [tool] Fix deprecated API calls within tool (flutter/flutter#168200) 2025-05-13 [email protected] Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (flutter/flutter#168510) 2025-05-13 [email protected] Fixes hero not shown when remove pages without animation (flutter/flutter#168617) 2025-05-13 [email protected] [iOS] Do not hide selection handles when platform hides system context menu (flutter/flutter#168678) 2025-05-13 [email protected] Updated execution path to silently include --start-paused and updated tests (flutter/flutter#168400) 2025-05-13 [email protected] Roll Packages from 6a28ad9 to 2e166de (2 revisions) (flutter/flutter#168736) 2025-05-13 [email protected] [web] Fix multiline input selection in Chrome. (flutter/flutter#168217) 2025-05-13 [email protected] Call xcode_backend.dart from macos_assemble.sh (flutter/flutter#168108) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
|
Hi, But I'm a little lost regarding which version I can use to test this fix. |
…r#9251) flutter/flutter@336a7ec...0b9f928 2025-05-14 [email protected] Fix Linux Impeller support broken by incorrect deletion of stencil buffer. (flutter/flutter#168668) 2025-05-14 [email protected] Roll Fuchsia Linux SDK from 6J81agNhuK4q255Jj... to fSvuEJgRmHxnewRJr... (flutter/flutter#168794) 2025-05-14 [email protected] Run `{Platform} flutter_packaging` builders on release candidates. (flutter/flutter#168762) 2025-05-14 [email protected] Remove `docs_deploy_beta`, fix `docs_publish`, add comments. (flutter/flutter#168754) 2025-05-14 [email protected] Add `titleAlignment` to `CheckboxListTile` and `RadioListTile` (flutter/flutter#168666) 2025-05-14 [email protected] Remove deprecated todo about caching (flutter/flutter#168534) 2025-05-13 [email protected] Replace hardcoded host and app level build.gradle paths with `AndroidProject`-level getters in `gradle_errors.dart` (flutter/flutter#167949) 2025-05-13 [email protected] Improve documentation for KeyedSubtree constructor (flutter/flutter#167198) 2025-05-13 [email protected] Wire up the system text scaler from `PlatformDispatcher` (flutter/flutter#159999) 2025-05-13 [email protected] Roll Dart SDK from 645d04a7a964 to b3520981e0f0 (3 revisions) (flutter/flutter#168721) 2025-05-13 [email protected] [a11y] Semanctis flag refactor step 3: framework part (flutter/flutter#167771) 2025-05-13 [email protected] Remove/replace the `team` label with `c: contributor-productivity`. (flutter/flutter#168702) 2025-05-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (#168510)" (flutter/flutter#168775) 2025-05-13 [email protected] Use live region in error text input decorator for Android (flutter/flutter#165531) 2025-05-13 [email protected] [tool] Fix deprecated API calls within tool (flutter/flutter#168200) 2025-05-13 [email protected] Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (flutter/flutter#168510) 2025-05-13 [email protected] Fixes hero not shown when remove pages without animation (flutter/flutter#168617) 2025-05-13 [email protected] [iOS] Do not hide selection handles when platform hides system context menu (flutter/flutter#168678) 2025-05-13 [email protected] Updated execution path to silently include --start-paused and updated tests (flutter/flutter#168400) 2025-05-13 [email protected] Roll Packages from 6a28ad9 to 2e166de (2 revisions) (flutter/flutter#168736) 2025-05-13 [email protected] [web] Fix multiline input selection in Chrome. (flutter/flutter#168217) 2025-05-13 [email protected] Call xcode_backend.dart from macos_assemble.sh (flutter/flutter#168108) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…r#9251) flutter/flutter@336a7ec...0b9f928 2025-05-14 [email protected] Fix Linux Impeller support broken by incorrect deletion of stencil buffer. (flutter/flutter#168668) 2025-05-14 [email protected] Roll Fuchsia Linux SDK from 6J81agNhuK4q255Jj... to fSvuEJgRmHxnewRJr... (flutter/flutter#168794) 2025-05-14 [email protected] Run `{Platform} flutter_packaging` builders on release candidates. (flutter/flutter#168762) 2025-05-14 [email protected] Remove `docs_deploy_beta`, fix `docs_publish`, add comments. (flutter/flutter#168754) 2025-05-14 [email protected] Add `titleAlignment` to `CheckboxListTile` and `RadioListTile` (flutter/flutter#168666) 2025-05-14 [email protected] Remove deprecated todo about caching (flutter/flutter#168534) 2025-05-13 [email protected] Replace hardcoded host and app level build.gradle paths with `AndroidProject`-level getters in `gradle_errors.dart` (flutter/flutter#167949) 2025-05-13 [email protected] Improve documentation for KeyedSubtree constructor (flutter/flutter#167198) 2025-05-13 [email protected] Wire up the system text scaler from `PlatformDispatcher` (flutter/flutter#159999) 2025-05-13 [email protected] Roll Dart SDK from 645d04a7a964 to b3520981e0f0 (3 revisions) (flutter/flutter#168721) 2025-05-13 [email protected] [a11y] Semanctis flag refactor step 3: framework part (flutter/flutter#167771) 2025-05-13 [email protected] Remove/replace the `team` label with `c: contributor-productivity`. (flutter/flutter#168702) 2025-05-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (#168510)" (flutter/flutter#168775) 2025-05-13 [email protected] Use live region in error text input decorator for Android (flutter/flutter#165531) 2025-05-13 [email protected] [tool] Fix deprecated API calls within tool (flutter/flutter#168200) 2025-05-13 [email protected] Clip search artifacts in CupertinoSliverNavigationBar searchable-to-searchable transitions (flutter/flutter#168510) 2025-05-13 [email protected] Fixes hero not shown when remove pages without animation (flutter/flutter#168617) 2025-05-13 [email protected] [iOS] Do not hide selection handles when platform hides system context menu (flutter/flutter#168678) 2025-05-13 [email protected] Updated execution path to silently include --start-paused and updated tests (flutter/flutter#168400) 2025-05-13 [email protected] Roll Packages from 6a28ad9 to 2e166de (2 revisions) (flutter/flutter#168736) 2025-05-13 [email protected] [web] Fix multiline input selection in Chrome. (flutter/flutter#168217) 2025-05-13 [email protected] Call xcode_backend.dart from macos_assemble.sh (flutter/flutter#168108) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
|
Hi @BenDevExatech @kayberd, as far as I can see, this fix was not included in Flutter 3.32 and will probably land in Flutter 3.34: https://ismyprinflutteryet.com/#/pr/framework/168217 |

Fixes #167805
Fixes #162698
Description
First of all, I would like to thank @jezell for posting their fix of this selection issue: singerdmx/flutter-quill#2450 (comment)
The issue with selection is happening because in Chrome
pointermoveevent and its coalesced events have some different targets. @mdebbar already spotted this behavior some time ago and even filed a Chrome bug: flutter/engine#56949 (comment)This jsfiddle allows reproducing the bug: https://jsfiddle.net/knevercode/y2hpfmrb/2/
On the following recording, you can see the events' targets and their bounding boxes.
chrome_bug.mov
Those coalesced events have their
offsetXandoffsetYvalues relative to the dummydivtarget. So to fix that, we have to translate those values to be relative to the actual target.This PR does exactly this in
_computeOffsetForInputswhenevent.target != eventTarget.bug.mov
fix.mov
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.