Visual and interactional offset issue in vertical tabs ui
Categories
(Core :: Layout: Scrolling and Overflow, defect, P3)
Tracking
()
People
(Reporter: npt1237, Assigned: hiro)
References
(Regression)
Details
(Keywords: regression)
Attachments
(4 files, 1 external file)
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0
Steps to reproduce:
Rapidly scrolling up or down in vertical tabs often creates an unintended blank space (margin) at the top or bottom of the tab list.
The exact trigger is inconsistent. While it happens most often during fast scrolling, it sometimes occurs during slow scrolls as well. The frequency is unpredictable—sometimes occurring every time, and other times once in five attempts.
Actual results:
When this gap appears, the mouse cursor's focus becomes misaligned with the actual tab selection point by the height of that gap.
Scrolling back toward the gap usually forces it to disappear, which also restores the correct alignment between the cursor and the selection point.
Expected results:
The gap should not be appeared.
Updated•6 months ago
|
Comment 2•6 months ago
|
||
The Bugbug bot thinks this bug should belong to the 'Firefox::Tabbed Browser' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.
Comment 3•6 months ago
|
||
This smells like a layout issue, not a frontend issue. Frontend code is not manipulating space above/below the actual scrollable elements unless dragging tabs, and the cursor being misaligned with where interaction happens I think would not be possible to achieve from frontend code alone (at least, not without trying to do it deliberatey, which we're obviously not).
Your screenshots show pinned tabs. Does this only reproduce in the situation where you have pinned tabs?
How are you scrolling - with a mouse scroll wheel, by dragging scrollbars, clicking in the scrollbar gutter, using the keyboard, or some other way? Can you describe what you do differently between what you call "fast scrolling" and "slow scrolling"?
Pinning or grouping tabs did not affect whether this issue occurred.
From what I observed, this issue only happens when scrolling with a touchpad. It does not occur when using the mouse wheel, dragging the scrollbar, or using keyboard shortcuts.
As for the difference between fast and slow scrolling: fast scrolling means moving your finger quickly on the touchpad so that the tab strip scrolls fully to the opposite direction in a short time. Slow scrolling means letting the built-in scrolling acceleration carry the movement to the opposite end after initiating the scroll on the touchpad.
If I keep my finger on the touchpad and continue the input until reaching the opposite end, no blank space appears at the edge.
Also, the more tabs are open, the longer the scrollable area, the wider the blank space becomes, and the more frequently it occurs.
*Slow scrolling means letting the scrolling acceleration itself carry the movement to the opposite end.
From my intuition, it seems that the inertial scrolling input from the touchpad is not being handled properly by the sidebar layout. When I scroll while keeping my finger on the touchpad, it appears that the scroll position is consistently constrained by the upper and lower bounds. However, this inertial “gliding” input does not seem to be treated as part of that same input stream.
Comment 7•6 months ago
|
||
The severity field is not set for this bug.
:hiro, could you have a look please?
For more information, please visit BugBot documentation.
| Assignee | ||
Comment 8•6 months ago
|
||
Hey npt1237, would you mind trying to set "apz.overscroll.enabled" to false, then see if this bug still persists?
I am guessing the gap is generated due to overscrolling , but now I tried to see it locally, but I don't see any overscrolling in the tab scroll container for some reasons.
| Reporter | ||
Comment 10•6 months ago
|
||
It occurs regardless of "appz.overscroll.enabled".
| Assignee | ||
Comment 11•6 months ago
|
||
npt1237, would you mind trying this build ? (you can directly download from this link) I hope this build fixes this issue. Thanks!
| Reporter | ||
Comment 12•6 months ago
|
||
| Reporter | ||
Comment 13•6 months ago
|
||
I think the problem is solved.
| Assignee | ||
Comment 14•6 months ago
|
||
Thanks.
Now I am ~90% sure this is a regression caused by bug 1871760. Since bug 1871760, we haven't clamped the visual scroll offset updated in ApplyRelativeScrollUpdateFrom because basically it has been clamped on the main-thread. But if there is a discrepancty between APZ and the main-thread, it will result out-of-bounds scroll offsets.
A patch is coming.
| Assignee | ||
Comment 15•6 months ago
|
||
When APZ is mid-animation and the main thread fires an instant scrollBy that
overshoots the top or left boundary, ApplyRelativeScrollUpdateFrom can produce
a negative visual scroll offset. Setting needToReclampScroll after the relative
update triggers the existing post-loop clamping on both Metrics() and all
sampled states, preventing the negative offset. As a side effect the bottom and
right boundaries are also clamped consistently.
Updated•6 months ago
|
| Assignee | ||
Comment 16•6 months ago
|
||
And I guess the scroll container stuck issue on youtube (bug 1931090) is also the same symptom here.
Comment 17•6 months ago
|
||
Set release status flags based on info from the regressing bug 1871760
Updated•6 months ago
|
Updated•6 months ago
|
Updated•5 months ago
|
Comment 18•5 months ago
|
||
Set release status flags based on info from the regressing bug 1871760
Updated•5 months ago
|
Comment 19•5 months ago
|
||
Comment 20•5 months ago
|
||
| bugherder | ||
Comment 21•5 months ago
|
||
The patch landed in nightly and beta is affected.
:hiro, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- See https://wiki.mozilla.org/Release_Management/Requesting_an_Uplift for documentation on how to request an uplift.
- If no, please set
status-firefox152towontfix.
For more information, please visit BugBot documentation.
| Assignee | ||
Updated•5 months ago
|
Updated•4 months ago
|
Description
•