mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2026-06-17 15:25:35 +00:00
Nested scroll nodes were present in the async scroll tree, but the compositor rejected any non-viewport wheel target and tracked only one pending viewport offset. That prevented element scrollports from being scrolled asynchronously and made compositor-side offsets impossible to adopt after the main thread rebuilt scroll state. Let async wheel commands target any scroll node selected by the tree. Store every offset produced by a compositor scroll and reapply pending offsets by stable ID across display-list and scroll-state updates. The main thread now adopts viewport, element and pseudo-element offsets before rendering-update observers run, including scroll event bookkeeping for element scrollers. Carry the wheel hit-test rejection reason through the enqueue path while doing this, so main-thread and blocking-wheel regions remain explicit rather than being collapsed into a missing target. Existing nested async-scrolling text tests cover the successful nested scroll path. |
||
|---|---|---|
| .. | ||
| EventLoop.cpp | ||
| EventLoop.h | ||
| Task.cpp | ||
| Task.h | ||
| TaskQueue.cpp | ||
| TaskQueue.h | ||