mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:07:34 +00:00
LibWeb: Paint positioned elements after non-positioned ones
Within the same stacking context, positioned elements must be painted after non-positioned ones. I added a Layout::Node::for_each_child_in_paint_order() to help with this since it's also needed for hit testing.
This commit is contained in:
parent
85a1bd6803
commit
c953e5d98a
3 changed files with 20 additions and 11 deletions
|
@ -177,6 +177,23 @@ public:
|
|||
SelectionState selection_state() const { return m_selection_state; }
|
||||
void set_selection_state(SelectionState state) { m_selection_state = state; }
|
||||
|
||||
template<typename Callback>
|
||||
void for_each_child_in_paint_order(Callback callback) const
|
||||
{
|
||||
for_each_child([&](auto& child) {
|
||||
if (is<Box>(child) && downcast<Box>(child).stacking_context())
|
||||
return;
|
||||
if (!child.is_positioned())
|
||||
callback(child);
|
||||
});
|
||||
for_each_child([&](auto& child) {
|
||||
if (is<Box>(child) && downcast<Box>(child).stacking_context())
|
||||
return;
|
||||
if (child.is_positioned())
|
||||
callback(child);
|
||||
});
|
||||
}
|
||||
|
||||
protected:
|
||||
Node(DOM::Document&, DOM::Node*);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue