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
Notes: sideshowbarker 2024-07-19 01:10:30 +09:00

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();