فهرست منبع

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.
Andreas Kling 4 سال پیش
والد
کامیت
b19f62217f
1فایلهای تغییر یافته به همراه1 افزوده شده و 1 حذف شده
  1. 1 1
      Libraries/LibWeb/Layout/TreeBuilder.cpp

+ 1 - 1
Libraries/LibWeb/Layout/TreeBuilder.cpp

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