Thanks for confirming you're seeing the same issue.
The difference between responsive scrolling enabled vs disabled is indeed small.
You can override scrollWheel(with:) in a custom NSScrollview and output event.scrollingDeltaY and event.momentumPhase. You'll notice a jump when the Phase changes from .none (gesture) to .began (stopped gesture).
The final .none event has a zero value for scrollingDeltaY. But the view scrolls way more than expected.
...
Event 0.016 -17.0 .none
Bounds 0.016 -17.0
Event 0.016 -20.0 .none
Bounds 0.016 -20.0
Event 0.016 -26.0 .none
Event 0.000 0.0 .none
Bounds 0.016 -59.0 <- jump
Event 0.018 -29.0 .began
Bounds 0.016 -19.5
Event 0.014 -31.0 .changed
Bounds 0.016 -18.5
...
The problem is that by overriding scrollWheel(with:) responsive scrolling is implicitly disabled. So these values may not be the same without override (the jump is larger when checking screen recording + responsive scroll). But it is clear that the inertia logic is not smooth when switching from gesture to momentum.
Not sure if that's due to "stepped" scrolling (interesting link!) but the custom WebKit implementation is indeed much smoother.
Topic:
UI Frameworks
SubTopic:
AppKit
Tags: