Closed Bug 1851021 Opened 1 year ago Closed 1 year ago

Regarding the click and hold of the scrollbar track (gutter), the scrolling does not stop for a while after mouse up.

Categories

(Core :: Layout: Scrolling and Overflow, defect)

Firefox 116
Desktop
Windows 10
defect

Tracking

()

RESOLVED DUPLICATE of bug 1840025
Tracking Status
firefox-esr102 --- unaffected
firefox-esr115 --- unaffected
firefox117 --- wontfix
firefox118 --- affected
firefox119 --- affected

People

(Reporter: alice0775, Unassigned)

References

(Regression)

Details

(Keywords: nightly-community, regression)

Steps to reproduce:

  1. Enable smooth scroll
  2. Open long page. e.g. https://ftp.mozilla.org/pub/firefox/nightly/2023/08/2023-08-01-03-45-57-mozilla-central-l10n/
  3. Click-hold scrollbar track to start scrolling
  4. Mouse up after 1-2 seconds

Actual Results:
It seems to take too long( >1.5 sec.) for the scrolling to stop after mouse up.
The scrolling inertia seems to be too large.

Profiler
Nightly119.0a1(Build Id 20230831161708) : https://share.firefox.dev/45OYcPG
Firefox115: https://share.firefox.dev/3Eiujvo

Expected Results:
Scrolling should stop within a short time( < 0.5 sec.).

Set release status flags based on info from the regressing bug 1331390

:rzvncj, since you are the author of the regressor, bug 1331390, could you take a look?

For more information, please visit BugBot documentation.

Flags: needinfo?(rzvncj)

Would it be possible to check if the changes from bug 1846575 have fixed this (unless :botond objects to the suggestion)?

No, the bug 1846575 did not fix this.

This time, I definitely suspect the change in physics from ScrollMode::Smooth to ScrollMode::SmoothMsd -- the MSD animation seems to have a longer tail before stopping.

Alice, could you try this build please (which changes it back to ScrollMode::Smooth as planned bug 1840025) and let me know if it addresses the issue?

Flags: needinfo?(alice0775)

(In reply to Botond Ballo [:botond] from comment #4)

This time, I definitely suspect the change in physics from ScrollMode::Smooth to ScrollMode::SmoothMsd -- the MSD animation seems to have a longer tail before stopping.

Alice, could you try this build please (which changes it back to ScrollMode::Smooth as planned bug 1840025) and let me know if it addresses the issue?

This bug(in case of general.smoothScroll = true, general.smoothScroll.pages = true) is fixed on the try build.
However, bug 1850457 (when general.smoothScroll = true, general.smoothScroll.pages = false) causes the behavior to ignore general.smoothScroll.pages on mouse up.

Flags: needinfo?(alice0775)

(In reply to Alice0775 White from comment #5)

(In reply to Botond Ballo [:botond] from comment #4)

This time, I definitely suspect the change in physics from ScrollMode::Smooth to ScrollMode::SmoothMsd -- the MSD animation seems to have a longer tail before stopping.

Alice, could you try this build please (which changes it back to ScrollMode::Smooth as planned bug 1840025) and let me know if it addresses the issue?

This bug(in case of general.smoothScroll = true, general.smoothScroll.pages = true) is fixed on the try build.

Thanks for checking.

However, bug 1850457 (when general.smoothScroll = true, general.smoothScroll.pages = false) causes the behavior to ignore general.smoothScroll.pages on mouse up.

Good catch!

I expected ScrollMode::Smooth to handle checking these prefs at the time of starting the animation (for animations handed off to the compositor, that happens here, with the function returning zero-duration settings if the scroll should be instant), but this relies on the scroll origin being propagated there. The interface we're using to trigger the scroll in nsSliderFrame::PageScroll(), nsIScrollableFrame::ScrollTo(), does not take a ScrollOrigin parameter, so when we start the animation we don't know the origin is ScrollOrigin::Pages and thus we should check the .pages pref.

We could get nsIScrollableFrame::ScrollTo() to take a scroll origin, but a simpler fix is just to keep the check at the call site in nsSliderFrame::PageScroll().

(In reply to Botond Ballo [:botond] from comment #6)

a simpler fix is just to keep the check at the call site in nsSliderFrame::PageScroll().

I will land the fix in bug 1840025.

Should be fixed by bug 1840025.

Status: NEW → RESOLVED
Closed: 1 year ago
Duplicate of bug: 1840025
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.