LibWeb: Move m_needs_repaint and record_display_list() in Document

Let's make document responsible for display list invalidation,
considering it already takes care of style and layout.
This commit is contained in:
Aliaksandr Kalenik 2024-08-19 02:06:52 +02:00 committed by Andreas Kling
commit 69c6e07139
Notes: github-actions[bot] 2024-08-19 16:58:13 +00:00
16 changed files with 117 additions and 109 deletions

View file

@ -127,25 +127,24 @@ void Paintable::invalidate_stacking_context()
m_stacking_context = nullptr;
}
void Paintable::set_needs_display() const
void Paintable::set_needs_display()
{
auto* containing_block = this->containing_block();
if (!containing_block)
return;
auto navigable = this->navigable();
if (!navigable)
return;
auto& document = const_cast<DOM::Document&>(this->document());
if (is<Painting::InlinePaintable>(*this)) {
auto const& fragments = static_cast<Painting::InlinePaintable const*>(this)->fragments();
for (auto const& fragment : fragments)
navigable->set_needs_display(fragment.absolute_rect());
document.set_needs_display(fragment.absolute_rect());
}
if (!is<Painting::PaintableWithLines>(*containing_block))
return;
static_cast<Painting::PaintableWithLines const&>(*containing_block).for_each_fragment([&](auto& fragment) {
navigable->set_needs_display(fragment.absolute_rect());
document.set_needs_display(fragment.absolute_rect());
return IterationDecision::Continue;
});
}