In scroll frames which are scrollable both horizontally and vertically, scroll gestures are often ignored
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr91 | --- | unaffected |
firefox101 | --- | unaffected |
firefox102 | --- | verified |
firefox103 | --- | verified |
People
(Reporter: mstange, Assigned: dlrobertson)
References
(Regression)
Details
(Keywords: regression)
Attachments
(2 files)
9.77 MB,
video/quicktime
|
Details | |
48 bytes,
text/x-phabricator-request
|
pascalc
:
approval-mozilla-beta+
|
Details | Review |
Steps to reproduce:
- Be on macOS.
- Go to https://share.firefox.dev/3H3IIvW
- In the call tree, try to scroll down to the bottom right by making individual axis aligned scroll motions: First scroll straight down, then lift the fingers, then scroll straight to the right, lift the fingers again, then down again, etc.
Expected results:
Scrolling should work.
Actual results:
When the scroll gesture is in a different direction than the previous scroll gesture, it is often ignored.
Even worse, "ignored" scrolls to the left end up navigating to the previous page.
Reporter | ||
Comment 1•3 years ago
|
||
I'm not sure if this is a regression.
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #1)
I'm not sure if this is a regression.
Have you reproduced this with a horizontal swipe while the horizontal scroller still has a significant amount of horizontal space in the given direction left to scroll? I can reproduce the blocked horizontal scroll with no effect, but I haven't been able to reproduce the blocked horizontal scroll that triggers a history swipe when there is horizontal space.
Reporter | ||
Comment 3•3 years ago
|
||
Reporter | ||
Comment 4•3 years ago
|
||
Yes, for me the history swipe occurs every time I have a blocked horizontal scroll in a direction where history swiping is possible (i.e. whenever the browser's back/forward button is enabled).
Assignee | ||
Comment 5•3 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #4)
Yes, for me the history swipe occurs every time I have a blocked horizontal scroll in a direction where history swiping is possible (i.e. whenever the browser's back/forward button is enabled).
Thanks for the video! That helped me understand the sequence of events and how the gestures were conducted. After attempting something similar I am able to reproduce as well.
Assignee | ||
Updated•3 years ago
|
Comment 6•3 years ago
|
||
Set release status flags based on info from the regressing bug 1713403
Updated•3 years ago
|
Assignee | ||
Comment 7•3 years ago
•
|
||
Summary
When implementing bug 1713403 I forgot to take into account Axis::CanScroll which is used by AsyncPanZoomController::ScrollableDirections and the APZInputBridge
here.
Possible Fixes
ScrollableDirections
should no longer consider axis locks
Should CanScroll
consider the axis lock? Particularly when attempting to discover scrollable directions, this doesn't seem correct to me. A axis lock doesn't necessarily indicate the axis is not scrollable, it just means we're currently consuming velocity on that axis. Using the axis locks in CanScroll
also kind of impacts our ability to break the axis lock when in STICKY
mode (as seen here). I think it is possible that something close to this issue could be hit outside of dominant axis locking, but I haven't tested this yet.
Do not use axis locks to restrict the momentum scroll
Revert the change that extends axis locks past the pan gesture end into a possible momentum scroll (c7abfd8bc34c
). Depending on the axis locking mode consume velocity on the weaker axis in the momentum scroll.
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 9•3 years ago
|
||
The axis lock should not be considered when determining if an axis can
scroll in a given direction.
Assignee | ||
Updated•3 years ago
|
Comment 10•3 years ago
|
||
Comment 11•3 years ago
|
||
bugherder |
Comment 12•3 years ago
|
||
This is a regression that landed during the 102 nightly cycle, can we uplift it to our last betas? Thanks
Assignee | ||
Comment 13•3 years ago
|
||
Comment on attachment 9280790 [details]
Bug 1773381 - Axis lock should not be considered in CanScroll(). r=botond
Beta/Release Uplift Approval Request
- User impact if declined: When the scroll gesture direction changes, the gesture may be ignored and possibly interpreted as a navigation gesture.
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): This patch only impacts the flagging of a axis as scrollable if another gesture is locking the axis. The existing logic in
AsyncPanZoomController::HandlePanningUpdate
already handles this case. - String changes made/needed:
- Is Android affected?: No
Comment 14•3 years ago
|
||
Comment on attachment 9280790 [details]
Bug 1773381 - Axis lock should not be considered in CanScroll(). r=botond
Approved for 102 beta 8, thanks.
Comment 15•3 years ago
|
||
bugherder uplift |
Updated•3 years ago
|
Updated•3 years ago
|
Comment 16•3 years ago
|
||
Reproduced the issue on macOS 11.5 with Firefox 103.0a1 (2022-06-08) by following the steps from comment 0. The scroll stops or navigates to another page when changing the scroll direction.
The issue is verified fixed with Firefox 102.0b8 and Firefox 103.0a1 (2022-06-15) on macOS 11.5. The scroll works accordingly after following steps from comment 0.
Description
•