LibWeb: Simplify Layout::Node::containing_block()

Use first_ancestor_of_type<BlockContainer>() instead of implementing a
custom traversal lambda.
This commit is contained in:
Andreas Kling 2022-03-18 11:55:16 +01:00
parent 6625edb5d2
commit 60c781ebc7
Notes: sideshowbarker 2024-07-18 05:01:22 +09:00

View file

@ -40,15 +40,8 @@ bool Node::can_contain_boxes_with_position_absolute() const
const BlockContainer* Node::containing_block() const
{
auto nearest_block_ancestor = [this] {
auto* ancestor = parent();
while (ancestor && !is<BlockContainer>(*ancestor))
ancestor = ancestor->parent();
return static_cast<const BlockContainer*>(ancestor);
};
if (is<TextNode>(*this))
return nearest_block_ancestor();
return first_ancestor_of_type<BlockContainer>();
auto position = computed_values().position();
@ -64,7 +57,7 @@ const BlockContainer* Node::containing_block() const
if (position == CSS::Position::Fixed)
return &root();
return nearest_block_ancestor();
return first_ancestor_of_type<BlockContainer>();
}
bool Node::establishes_stacking_context() const