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.
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.
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.
Within TextSelectionGestureDetector we default to grouping fuchsia with Android if the behavior is unknown.
There was a problem hiding this comment.
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.
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.
why are they not enabled? are they going to be enabled in the future?
There was a problem hiding this comment.
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.
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.
Sounds good, will do that.
b57ad8a to
3a792e5
Compare
…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 [email protected] Roll Packages from 711b4ac to 03f5f6d (21 revisions) (flutter/flutter#150779) 2024-06-25 [email protected] Roll Flutter Engine from afa7ce19bca8 to fbd92055f3a6 (1 revision) (flutter/flutter#150777) 2024-06-25 [email protected] Reland Add tests for form_text_field.1.dart (#150481) (#150696) (flutter/flutter#150750) 2024-06-25 [email protected] Add an example for CupertinoPopupSurface (flutter/flutter#150357) 2024-06-25 [email protected] [flutter_tools/dap] Handle app.stop errors when launching/attaching (flutter/flutter#149734) 2024-06-25 [email protected] Roll Flutter Engine from be7db94196fe to afa7ce19bca8 (18 revisions) (flutter/flutter#150762) 2024-06-25 [email protected] 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 [email protected] Manual engine roll to 6884e83 (flutter/flutter#150733) 2024-06-24 [email protected] Linkify 'see also' sections (flutter/flutter#150734) 2024-06-24 [email protected] Roll pub packages (flutter/flutter#150712) 2024-06-24 [email protected] Update flutter.dev links from framework to more permanent destinations (flutter/flutter#150531) 2024-06-24 [email protected] Manual engine roll to be7db94196fe (flutter/flutter#150714) 2024-06-24 [email protected] allow adb to set canfail then use canFail=true for clearing logs (flutter/flutter#150517) 2024-06-24 [email protected] Update android_device.dart to have clearLogs not print to standard error (flutter/flutter#150197) 2024-06-24 [email protected] Update issue link in analysis_options.yaml (flutter/flutter#150395) 2024-06-24 [email protected] Fix a number of broken doc comment references (flutter/flutter#150540) 2024-06-24 [email protected] 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 [email protected] Add tests for form_text_field.1.dart (flutter/flutter#150481) 2024-06-22 [email protected] Fix: Memory leak in UndoHistory widget because it never de-registered itself as global UndoManager client (Resolves #148291) (flutter/flutter#150661) 2024-06-22 [email protected] [CupertinoActionSheet] Fix the layout (part 1) (flutter/flutter#149636) 2024-06-21 [email protected] Remove discontinued `device_info` and `connectivity` plugins from `flutter_gallery`, roll pub packages (flutter/flutter#150585) 2024-06-21 [email protected] [a11y] Update semantics in bottom_navigation_bar.dart (flutter/flutter#150576) 2024-06-21 [email protected] Roll Flutter Engine from dda82d905f37 to 33415c6ee7c2 (7 revisions) (flutter/flutter#150637) 2024-06-21 [email protected] Reland 4: [CupertinoActionSheet] Match colors to native (flutter/flutter#150442) 2024-06-21 [email protected] Enable SelectionArea double tap/triple tap gesture support for mobile platforms (flutter/flutter#149295) 2024-06-21 [email protected] made SelectionArea alignment consistent between web and other platform (flutter/flutter#150037) 2024-06-21 [email protected] Fix link hook typo (flutter/flutter#150194) 2024-06-21 [email protected] Stop looking for .packages when analyzing (flutter/flutter#150349) 2024-06-20 [email protected] Update flutter.dev links from misc packages to more permanent destinations (flutter/flutter#150532) 2024-06-20 [email protected] Roll Flutter Engine from dd37cefd4a94 to dda82d905f37 (9 revisions) (flutter/flutter#150582) 2024-06-20 [email protected] Update Material token to the latest 4.1.0 (flutter/flutter#150382) 2024-06-20 [email protected] Let the lockfile script generate lockfiles for kotlin gradle files as well (flutter/flutter#150471) 2024-06-20 [email protected] Make popup menu hardcoded padding configurable (flutter/flutter#150506) 2024-06-20 [email protected] [flutter_tools] un-hide the --dds flag (flutter/flutter#150280) 2024-06-20 [email protected] [material/menu_anchor.dart] Remove _MenuAnchorState from parent when disposed. (flutter/flutter#149586) 2024-06-20 [email protected] Add test for inherited_notifier.0.dart (flutter/flutter#150344) 2024-06-20 [email protected] [CLI tool] in `flutter test`, consider `--flavor` when validating the cached asset bundle (flutter/flutter#150461) 2024-06-20 [email protected] Test InputDecoration API examples (flutter/flutter#148560) 2024-06-20 [email protected] Clean leaky tests. (flutter/flutter#150335) 2024-06-20 [email protected] Roll Flutter Engine from f9c497f178d3 to dd37cefd4a94 (2 revisions) (flutter/flutter#150537) 2024-06-20 [email protected] Roll Flutter Engine from a31279381b40 to f9c497f178d3 (9 revisions) (flutter/flutter#150528) 2024-06-19 [email protected] Add tests for about_list_tile.0.dart (flutter/flutter#150181) 2024-06-19 [email protected] Roll Flutter Engine from 0ad18fe4c0b5 to a31279381b40 (7 revisions) (flutter/flutter#150473) 2024-06-18 [email protected] 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
///).