mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 10:37:45 +00:00
LibWeb: Paint relatively positioned inline-level elements
Since we deliberately skip positioned elements in paint_descendants(), we have to make sure we actually paint them in the subsequent paint_internal() pass. Before this change, we were only painting positioned elements whose paintable was a PaintableBox, neglecting inline-level relpos elements.
This commit is contained in:
parent
268492413a
commit
2d6c1bbf88
2 changed files with 40 additions and 16 deletions
|
@ -83,6 +83,28 @@ public:
|
|||
return TraversalDecision::Continue;
|
||||
}
|
||||
|
||||
template<typename Callback>
|
||||
TraversalDecision for_each_in_inclusive_subtree(Callback callback) const
|
||||
{
|
||||
if (auto decision = callback(*this); decision != TraversalDecision::Continue)
|
||||
return decision;
|
||||
for (auto* child = first_child(); child; child = child->next_sibling()) {
|
||||
if (child->for_each_in_inclusive_subtree(callback) == TraversalDecision::Break)
|
||||
return TraversalDecision::Break;
|
||||
}
|
||||
return TraversalDecision::Continue;
|
||||
}
|
||||
|
||||
template<typename Callback>
|
||||
TraversalDecision for_each_in_subtree(Callback callback) const
|
||||
{
|
||||
for (auto* child = first_child(); child; child = child->next_sibling()) {
|
||||
if (child->for_each_in_inclusive_subtree(callback) == TraversalDecision::Break)
|
||||
return TraversalDecision::Break;
|
||||
}
|
||||
return TraversalDecision::Continue;
|
||||
}
|
||||
|
||||
virtual void paint(PaintContext&, PaintPhase) const { }
|
||||
|
||||
virtual void before_children_paint(PaintContext&, PaintPhase) const { }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue