mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2026-06-19 00:01:59 +00:00
Problem: An iframe whose content changes while it (or an ancestor) has visibility:hidden isn’t painted once it becomes visible again. The stale previous frame stays on screen until an unrelated repaint (e.g., window resize) happens to occur. Cause: set_needs_repaint() returns early for any document inside an iframe with a visibility:hidden ancestor — discarding the request entirely. The navigable’s needs_repaint flag is never set. Nothing sets it again when the iframe becomes visible — so the rendering loop keeps skipping it — and its display list stays stale. Fix: Stop discarding the request in set_needs_repaint(). Instead, skip painting hidden navigables in the rendering loop — while leaving needs_repaint set. Once an ancestor iframe becomes visible, the still-set flag makes the rendering loop paint the navigable on the next frame. Fixes https://github.com/LadybirdBrowser/ladybird/issues/9305 |
||
|---|---|---|
| .. | ||
| EventLoop.cpp | ||
| EventLoop.h | ||
| Task.cpp | ||
| Task.h | ||
| TaskQueue.cpp | ||
| TaskQueue.h | ||