Async scrolling handled a single wheel event differently from the main-thread default action. When a nested scroll node consumed part of a large delta and reached its edge, the compositor handed the remaining delta to an ancestor in the same event. The sync path treats the first scrollable target that moves as having handled the event. Stop the async handoff after any scroll node consumes part of the delta so async and sync wheel handling agree. Hit testing still selects an ancestor when the original target cannot scroll in that direction, which preserves the existing boundary fallback behavior. |
||
|---|---|---|
| .. | ||
| AsyncScrollingState.cpp | ||
| AsyncScrollingState.h | ||
| AsyncScrollTree.cpp | ||
| AsyncScrollTree.h | ||
| CompositorThread.cpp | ||
| CompositorThread.h | ||