1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:08:10 +00:00

LibWeb: Allow inline-block boxes to have non-inline children

We were incorrectly hoisting non-inline children of inline-block boxes
to the nearest non-inline ancestor.

Since inline-block boxes are only inline on the *outside*, it's fine
for them to have non-inline children.

Eventually we should clarify these relationships by making the inside
and outside display types more explicit.
This commit is contained in:
Andreas Kling 2020-11-29 22:24:53 +01:00
parent 13c32e0607
commit b19f62217f

View file

@ -118,7 +118,7 @@ void TreeBuilder::create_layout_tree(DOM::Node& dom_node)
// Non-inlines can't be inserted into an inline parent, so find the nearest non-inline ancestor.
auto& nearest_non_inline_ancestor = [&]() -> Layout::Node& {
for (ssize_t i = m_parent_stack.size() - 1; i >= 0; --i) {
if (!m_parent_stack[i]->is_inline())
if (!m_parent_stack[i]->is_inline() || m_parent_stack[i]->is_inline_block())
return *m_parent_stack[i];
}
ASSERT_NOT_REACHED();