-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Enable SelectionArea double tap/triple tap gesture support for mobile platforms #149295
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
Enable SelectionArea double tap/triple tap gesture support for mobile platforms #149295
Conversation
77dcc25 to
f081b65
Compare
| } | ||
| // From observation, these platforms reset their tap count to 0 when | ||
| // the number of consecutive taps exceeds the max consecutive tap supported. | ||
| // For example on Debian Linux with GTK, when going past a triple click, |
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.
but linux is not in this switch case, it is fuchsia instead.
| case TargetPlatform.android: | ||
| case TargetPlatform.fuchsia: | ||
| case TargetPlatform.iOS: | ||
| _gestureRecognizers[TapAndHorizontalDragGestureRecognizer] = GestureRecognizerFactoryWithHandlers<TapAndHorizontalDragGestureRecognizer>( |
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.
Can you add some comment on why we use tap and horizontal drag here? also is fuchsia meant to be here?
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.
Within TextSelectionGestureDetector we default to grouping fuchsia with Android if the behavior is unknown.
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.
I reverted to using TapAndPanGestureRecognizer like desktop for now. The reason I was using TapAndHorizontalDragGestureRecognizer is because of the recognizer usage in TextField, but I don't think the same assumptions are valid here.
| renderSelectionSpy.events.clear(); | ||
|
|
||
| await gesture.moveTo(const Offset(200.0, 100.0)); | ||
| await gesture.moveTo(const Offset(100.0, 200.0)); |
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.
why this change?
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.
This was because I was using TapAndHorizontalDragGestureRecognizer so I needed a horizontal move to win the arena, but I have since changed it to TapAndPan so this change is reverted.
| await gesture.up(); | ||
| }, | ||
| variant: TargetPlatformVariant.mobile(), | ||
| skip: kIsWeb, // [intended] Double tap / double tap + drag gestures are not fully enabled on the web for mobile platforms. |
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.
why are they not enabled? are they going to be enabled in the future?
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.
This is the behavior I observed on native platforms (TextView on Android and UITextView on iOS), and while testing on different websites on the web. I'm not against enabling them, what do you think?
I will enable double tap + drag on iOS since that looks like it works on the web, but from my observations a regular double tap does nothing (sometimes zooms in page).
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.
oh I see, In that case I will probably rephrase this to say something like
web does not support double tap + drag gestures.
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.
Sounds good, will do that.
b57ad8a to
3a792e5
Compare
chunhtai
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.
LGTM
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
* master: (213 commits) Fix: Memory leak in UndoHistory widget because it never de-registered itself as global UndoManager client (Resolves flutter#148291) (flutter#150661) [CupertinoActionSheet] Fix the layout (part 1) (flutter#149636) Remove discontinued `device_info` and `connectivity` plugins from `flutter_gallery`, roll pub packages (flutter#150585) [a11y] Update semantics in bottom_navigation_bar.dart (flutter#150576) Roll Flutter Engine from dda82d9 to 33415c6 (7 revisions) (flutter#150637) Reland 4: [CupertinoActionSheet] Match colors to native (flutter#150442) Enable SelectionArea double tap/triple tap gesture support for mobile platforms (flutter#149295) made SelectionArea alignment consistent between web and other platform (flutter#150037) Fix link hook typo (flutter#150194) Stop looking for .packages when analyzing (flutter#150349) Update flutter.dev links from misc packages to more permanent destinations (flutter#150532) Roll Flutter Engine from dd37cef to dda82d9 (9 revisions) (flutter#150582) Update Material token to the latest 4.1.0 (flutter#150382) Let the lockfile script generate lockfiles for kotlin gradle files as well (flutter#150471) Make popup menu hardcoded padding configurable (flutter#150506) [flutter_tools] un-hide the --dds flag (flutter#150280) [material/menu_anchor.dart] Remove _MenuAnchorState from parent when disposed. (flutter#149586) Add test for inherited_notifier.0.dart (flutter#150344) [CLI tool] in `flutter test`, consider `--flavor` when validating the cached asset bundle (flutter#150461) Test InputDecoration API examples (flutter#148560) ...
…ileTheme * master: (88 commits) Fix: Memory leak in UndoHistory widget because it never de-registered itself as global UndoManager client (Resolves flutter#148291) (flutter#150661) [CupertinoActionSheet] Fix the layout (part 1) (flutter#149636) Remove discontinued `device_info` and `connectivity` plugins from `flutter_gallery`, roll pub packages (flutter#150585) [a11y] Update semantics in bottom_navigation_bar.dart (flutter#150576) Roll Flutter Engine from dda82d9 to 33415c6 (7 revisions) (flutter#150637) Reland 4: [CupertinoActionSheet] Match colors to native (flutter#150442) Enable SelectionArea double tap/triple tap gesture support for mobile platforms (flutter#149295) made SelectionArea alignment consistent between web and other platform (flutter#150037) Fix link hook typo (flutter#150194) Stop looking for .packages when analyzing (flutter#150349) Update flutter.dev links from misc packages to more permanent destinations (flutter#150532) Roll Flutter Engine from dd37cef to dda82d9 (9 revisions) (flutter#150582) Update Material token to the latest 4.1.0 (flutter#150382) Let the lockfile script generate lockfiles for kotlin gradle files as well (flutter#150471) Make popup menu hardcoded padding configurable (flutter#150506) [flutter_tools] un-hide the --dds flag (flutter#150280) [material/menu_anchor.dart] Remove _MenuAnchorState from parent when disposed. (flutter#149586) Add test for inherited_notifier.0.dart (flutter#150344) [CLI tool] in `flutter test`, consider `--flavor` when validating the cached asset bundle (flutter#150461) Test InputDecoration API examples (flutter#148560) ...
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
…r mobile platforms (flutter/flutter#149295)
Roll Flutter from 6c06abb to e726eb4 (51 revisions) flutter/flutter@6c06abb...e726eb4 2024-06-25 engine-flutter-autoroll@skia.org Roll Packages from 711b4ac to 03f5f6d (21 revisions) (flutter/flutter#150779) 2024-06-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from afa7ce19bca8 to fbd92055f3a6 (1 revision) (flutter/flutter#150777) 2024-06-25 32538273+ValentinVignal@users.noreply.github.com Reland Add tests for form_text_field.1.dart (#150481) (#150696) (flutter/flutter#150750) 2024-06-25 104349824+huycozy@users.noreply.github.com Add an example for CupertinoPopupSurface (flutter/flutter#150357) 2024-06-25 danny@tuppeny.com [flutter_tools/dap] Handle app.stop errors when launching/attaching (flutter/flutter#149734) 2024-06-25 engine-flutter-autoroll@skia.org Roll Flutter Engine from be7db94196fe to afa7ce19bca8 (18 revisions) (flutter/flutter#150762) 2024-06-25 sigurdm@google.com Remove dubious comment (flutter/flutter#150608) 2024-06-25 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Manual engine roll to 6884e83 (#150733)" (flutter/flutter#150746) 2024-06-25 34871572+gmackall@users.noreply.github.com Manual engine roll to 6884e83 (flutter/flutter#150733) 2024-06-24 goderbauer@google.com Linkify 'see also' sections (flutter/flutter#150734) 2024-06-24 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#150712) 2024-06-24 parlough@gmail.com Update flutter.dev links from framework to more permanent destinations (flutter/flutter#150531) 2024-06-24 jason-simmons@users.noreply.github.com Manual engine roll to be7db94196fe (flutter/flutter#150714) 2024-06-24 reidbaker@google.com allow adb to set canfail then use canFail=true for clearing logs (flutter/flutter#150517) 2024-06-24 reidbaker@google.com Update android_device.dart to have clearLogs not print to standard error (flutter/flutter#150197) 2024-06-24 goderbauer@google.com Update issue link in analysis_options.yaml (flutter/flutter#150395) 2024-06-24 srawlins@google.com Fix a number of broken doc comment references (flutter/flutter#150540) 2024-06-24 katelovett@google.com Fix flaky sliver tree test (flutter/flutter#150707) 2024-06-24 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add tests for form_text_field.1.dart (#150481)" (flutter/flutter#150696) 2024-06-24 32538273+ValentinVignal@users.noreply.github.com Add tests for form_text_field.1.dart (flutter/flutter#150481) 2024-06-22 matthew-carroll@users.noreply.github.com Fix: Memory leak in UndoHistory widget because it never de-registered itself as global UndoManager client (Resolves #148291) (flutter/flutter#150661) 2024-06-22 dkwingsmt@users.noreply.github.com [CupertinoActionSheet] Fix the layout (part 1) (flutter/flutter#149636) 2024-06-21 34871572+gmackall@users.noreply.github.com Remove discontinued `device_info` and `connectivity` plugins from `flutter_gallery`, roll pub packages (flutter/flutter#150585) 2024-06-21 jhy03261997@gmail.com [a11y] Update semantics in bottom_navigation_bar.dart (flutter/flutter#150576) 2024-06-21 engine-flutter-autoroll@skia.org Roll Flutter Engine from dda82d905f37 to 33415c6ee7c2 (7 revisions) (flutter/flutter#150637) 2024-06-21 dkwingsmt@users.noreply.github.com Reland 4: [CupertinoActionSheet] Match colors to native (flutter/flutter#150442) 2024-06-21 rmolivares@renzo-olivares.dev Enable SelectionArea double tap/triple tap gesture support for mobile platforms (flutter/flutter#149295) 2024-06-21 limanegaya@gmail.com made SelectionArea alignment consistent between web and other platform (flutter/flutter#150037) 2024-06-21 moritz@suemmermann.de Fix link hook typo (flutter/flutter#150194) 2024-06-21 sigurdm@google.com Stop looking for .packages when analyzing (flutter/flutter#150349) 2024-06-20 parlough@gmail.com Update flutter.dev links from misc packages to more permanent destinations (flutter/flutter#150532) 2024-06-20 engine-flutter-autoroll@skia.org Roll Flutter Engine from dd37cefd4a94 to dda82d905f37 (9 revisions) (flutter/flutter#150582) 2024-06-20 36861262+QuncCccccc@users.noreply.github.com Update Material token to the latest 4.1.0 (flutter/flutter#150382) 2024-06-20 34871572+gmackall@users.noreply.github.com Let the lockfile script generate lockfiles for kotlin gradle files as well (flutter/flutter#150471) 2024-06-20 bruno.leroux@gmail.com Make popup menu hardcoded padding configurable (flutter/flutter#150506) 2024-06-20 christopherfujino@gmail.com [flutter_tools] un-hide the --dds flag (flutter/flutter#150280) 2024-06-20 59215665+davidhicks980@users.noreply.github.com [material/menu_anchor.dart] Remove _MenuAnchorState from parent when disposed. (flutter/flutter#149586) 2024-06-20 32538273+ValentinVignal@users.noreply.github.com Add test for inherited_notifier.0.dart (flutter/flutter#150344) 2024-06-20 andrewrkolos@gmail.com [CLI tool] in `flutter test`, consider `--flavor` when validating the cached asset bundle (flutter/flutter#150461) 2024-06-20 82763757+NobodyForNothing@users.noreply.github.com Test InputDecoration API examples (flutter/flutter#148560) 2024-06-20 polinach@google.com Clean leaky tests. (flutter/flutter#150335) 2024-06-20 engine-flutter-autoroll@skia.org Roll Flutter Engine from f9c497f178d3 to dd37cefd4a94 (2 revisions) (flutter/flutter#150537) 2024-06-20 engine-flutter-autoroll@skia.org Roll Flutter Engine from a31279381b40 to f9c497f178d3 (9 revisions) (flutter/flutter#150528) 2024-06-19 32538273+ValentinVignal@users.noreply.github.com Add tests for about_list_tile.0.dart (flutter/flutter#150181) 2024-06-19 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0ad18fe4c0b5 to a31279381b40 (7 revisions) (flutter/flutter#150473) 2024-06-18 jhy03261997@gmail.com Revert "[a11y] Add semantics: button to bottom navigation bar items and dropdown menu items" (flutter/flutter#150445) ...
… platforms (flutter#149295) This change enables double tap / triple tap support in SelectionArea for mobile platforms: Android / Fuchsia: - On native, these platforms allow for double tap / double tap + drag to select word-by-word. - On web using touch, these platforms only support double tap to select word. - On web and native using a mouse, these platforms support double click / double click + drag to select word-by-word, and triple click / triple click + drag to select paragraph-by-paragraph. iOS: - On native, these platforms allow for double tap / double tap + drag to select word-by-word. - On web using touch, these platforms do not support double tap/triple tap gestures. - On web using touch, these platforms allow support double tap + drag gestures. - On web and native using a mouse, these platforms support double click / double click + drag to select word-by-word, and triple click / triple click + drag to select paragraph-by-paragraph. Part of: flutter#129583
…r mobile platforms (flutter/flutter#149295)
This change enables double tap / triple tap support in SelectionArea for mobile platforms:
Android / Fuchsia:
iOS:
Part of: #129583
Pre-launch Checklist
///).