1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 19:15:09 +00:00

LibWeb: Let subframes propagate paint invalidations via host element

When a paint invalidation occurs inside a subframe, it bubbles up to
Frame::set_needs_display(). From there, we call PageView if this is
the main frame, or otherwise invalidate the subframe host element.
This commit is contained in:
Andreas Kling 2020-06-07 14:56:29 +02:00
parent 59f9b32a44
commit 3ae3729b4e
5 changed files with 30 additions and 17 deletions

View file

@ -93,9 +93,14 @@ void Frame::set_needs_display(const Gfx::Rect& rect)
if (!m_viewport_rect.intersects(rect))
return;
if (!on_set_needs_display)
if (is_main_frame()) {
if (page_view())
page_view()->notify_needs_display({}, *this, rect);
return;
on_set_needs_display(rect);
}
if (host_element() && host_element()->layout_node())
host_element()->layout_node()->set_needs_display();
}
void Frame::did_scroll(Badge<PageView>)