소스 검색

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