Skip to content

Conversation

@HansMuller
Copy link
Contributor

@HansMuller HansMuller commented Jun 14, 2024

Corrects some problems related to trackpad scrolls introduced by #146654.

Fixes #149999
Fixes #150342
Fixes #150236

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact "@test-exemption-reviewer" in the #hackers channel in Chat (don't just cc them here, they won't see it! Use Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: scrolling Viewports, list views, slivers, etc. labels Jun 14, 2024
@HansMuller HansMuller force-pushed the scrollbar_trackpad_drag_fix branch 6 times, most recently from e9fd037 to ffbbeac Compare June 18, 2024 20:35
@HansMuller HansMuller requested a review from Piinks June 18, 2024 22:24
@HansMuller HansMuller force-pushed the scrollbar_trackpad_drag_fix branch from ffbbeac to 9d74964 Compare June 18, 2024 22:36
@mark8044
Copy link

Is this going into the master branch? Would love to test this as well

@HansMuller
Copy link
Contributor Author

Yes, the plan is to land this PR on the master branch.

@HansMuller HansMuller force-pushed the scrollbar_trackpad_drag_fix branch 2 times, most recently from c9b3aff to 94e5584 Compare June 21, 2024 16:51
final GlobalKey _scrollbarPainterKey = GlobalKey();
bool _hoverIsActive = false;
Drag? _thumbDrag;
bool _isScrollable = false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does not look like this is used for anything, can it be removed?

if (metrics.axis != _axis) {
setState(() { _axis = metrics.axis; });
}
if (_isScrollable != notification.metrics.maxScrollExtent > 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also is not necessarily true. Some scroll physics allow scrolling when there is no scrollable extent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made the name too short. It should really be called maxScrollExtentPermitsScrolling; it's only used to detect this one state change and trigger a rebuild.


await tester.pumpWidget(buildFrame(100)); // Test viewport has height=600
await tester.pumpAndSettle();
expect(scrollController.offset, 0.0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a regression test for #150342?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, there isn't one. I will add it.

// The protected RawScrollbar API methods - handleThumbPressStart,
// handleThumbPressUpdate, handleThumbPressEnd - all depend on a
// localPosition parameter that defines the event's location relative
// to the scrollbar. Ensure that the localPosition is reported consistently,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double space before "Ensure".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, done.

if (metrics.axis != _axis) {
setState(() { _axis = metrics.axis; });
}
if (_isScrollable != notification.metrics.maxScrollExtent > 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

> 0.0 for double like in another instance of .maxScrollExtent > comparison.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Contributor

@Piinks Piinks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@HansMuller HansMuller added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 26, 2024
@auto-submit auto-submit bot merged commit e4c18b7 into flutter:master Jun 27, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 27, 2024
@HansMuller HansMuller deleted the scrollbar_trackpad_drag_fix branch June 27, 2024 16:39
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 27, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 27, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jun 28, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jun 28, 2024
Manual roll Flutter from e726eb4 to 15f95ce (48 revisions)

Manual roll requested by [email protected]

flutter/flutter@e726eb4...15f95ce

2024-06-28 [email protected] Roll Flutter Engine from ddd4814b9d40 to 94591ffb20df (5 revisions) (flutter/flutter#150968)
2024-06-27 [email protected] Manual engine roll to ddd4814 (flutter/flutter#150952)
2024-06-27 [email protected] local lint copy gradle task config (flutter/flutter#150957)
2024-06-27 [email protected] Roll Flutter Engine from b42c80460538 to d1506c12808e (3 revisions) (flutter/flutter#150951)
2024-06-27 [email protected] [tool] make the `systemTempDirectory` getter on `ErrorHandlingFileSystem` wrap the underlying filesystem's temp directory in a`ErrorHandlingDirectory` (flutter/flutter#150876)
2024-06-27 [email protected] Have flutter.js load local canvaskit instead of the CDN when appropriate (flutter/flutter#150806)
2024-06-27 [email protected] Roll Flutter Engine from a9194f0f01f4 to b42c80460538 (10 revisions) (flutter/flutter#150940)
2024-06-27 [email protected] [a11y] Reland [#149375 ] Update semantics in dropdown.dart (flutter/flutter#150578)
2024-06-27 [email protected] Bump dartdoc to 8.0.9+1 (flutter/flutter#150935)
2024-06-27 [email protected] add onFocus to text fields (flutter/flutter#150648)
2024-06-27 [email protected] Fixes `flutter build ipa` failure: Command line name "app-store" is deprecated. Use "app-store-connect"  (flutter/flutter#150407)
2024-06-27 [email protected] Copy any previous `IconThemeData` instead of overwriting it in CupertinoButton (flutter/flutter#149777)
2024-06-27 [email protected] Improve the behavior of scrollbar drag-scrolls triggered by the trackpad (flutter/flutter#150275)
2024-06-27 [email protected]  feat: Add autofocus for `MenuItemButton` (flutter/flutter#139396)
2024-06-27 [email protected] Roll Flutter Engine from 1d5e3cc55a75 to a9194f0f01f4 (7 revisions) (flutter/flutter#150888)
2024-06-26 [email protected] Reland "Remove dual_screen from new_gallery integration test" (flutter/flutter#150873)
2024-06-26 [email protected] Switch to more reliable flutter.dev link destinations in the tool (flutter/flutter#150587)
2024-06-26 [email protected] Adding `@docImport`s to the `animation` library (flutter/flutter#150798)
2024-06-26 [email protected] Remove CODEOWNERS trailing whitespace (flutter/flutter#150882)
2024-06-26 [email protected] Roll Flutter Engine from e03cf86c4170 to 1d5e3cc55a75 (3 revisions) (flutter/flutter#150875)
2024-06-26 [email protected] Remind folks we are moving. (flutter/flutter#150872)
2024-06-26 [email protected] Remove `bringup: true` from web test shard. (flutter/flutter#150785)
2024-06-26 [email protected] Roll Flutter Engine from c0017bed42c2 to e03cf86c4170 (1 revision) (flutter/flutter#150867)
2024-06-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Remove `dual_screen` from `new_gallery` integration test (#150808)" (flutter/flutter#150871)
2024-06-26 [email protected] Remove `dual_screen` from `new_gallery` integration test (flutter/flutter#150808)
2024-06-26 [email protected] Roll Flutter Engine from d4624a36712b to c0017bed42c2 (4 revisions) (flutter/flutter#150865)
2024-06-26 [email protected] Fixes for Style Guide for Flutter Repo (flutter/flutter#150167)
2024-06-26 [email protected] Roll Flutter Engine from da62c629ed5c to d4624a36712b (3 revisions) (flutter/flutter#150852)
2024-06-26 [email protected] Use `Isolate.packageConfigSync! to locate the packageconfig of flutter tools (flutter/flutter#150340)
2024-06-26 [email protected] Roll Flutter Engine from 25af762ffbb3 to da62c629ed5c (2 revisions) (flutter/flutter#150829)
2024-06-26 [email protected] Fix leaky tests. (flutter/flutter#150817)
2024-06-26 [email protected] Roll Flutter Engine from 94023d711db3 to 25af762ffbb3 (4 revisions) (flutter/flutter#150818)
2024-06-26 [email protected] Roll pub packages (flutter/flutter#150810)
2024-06-25 [email protected] Remove reference to `MaterialApp` and `showCupertinoModalPopup` from `CupertinoAlertDialog` (flutter/flutter#150725)
2024-06-25 [email protected] Read `AndroidManifest.xml` and emit `manifest-impeller-(enabled|disabled)` analytics (flutter/flutter#150791)
2024-06-25 [email protected] [flutter_tools] Shut down Chromium cleanly using a command sent through the debug protocol (flutter/flutter#150645)
2024-06-25 [email protected] Reland fix inputDecorator hint color on M3 (flutter/flutter#150278)
2024-06-25 [email protected] Roll Flutter Engine from 62e0b5f9c340 to 94023d711db3 (7 revisions) (flutter/flutter#150797)
2024-06-25 [email protected] Fix collapsed InputDecorator minimum height (flutter/flutter#150770)
2024-06-25 [email protected] Add more warm up frame docs (flutter/flutter#150464)
2024-06-25 [email protected] Roll pub packages (flutter/flutter#150739)
2024-06-25 [email protected] Add `focusNode`, `focusColor`, `onFocusChange`, `autofocus` to `CupertinoButton` (flutter/flutter#150721)
2024-06-25 [email protected] Document RenderObject._relayoutBoundary and its invariant; small refactors (flutter/flutter#150527)
2024-06-25 [email protected] Roll Flutter Engine from 6313b1e5afd7 to 62e0b5f9c340 (1 revision) (flutter/flutter#150790)
...
victorsanni pushed a commit to victorsanni/flutter that referenced this pull request Jul 8, 2024
…pad (flutter#150275)

Corrects some problems related to trackpad scrolls introduced by flutter#146654.

Fixes flutter#149999
Fixes flutter#150342
Fixes flutter#150236
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App f: scrolling Viewports, list views, slivers, etc. framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

4 participants