diff options
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp index 6227f381df..a95f5a0bf1 100644 --- a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -84,9 +84,7 @@ static Layout::Node& insertion_parent_for_block_node(Layout::NodeWithStyle& layo return layout_parent; } - // TODO: Floats should probably also be able to have inline siblings - if (layout_node.is_absolutely_positioned() && layout_parent.last_child()->children_are_inline()) { - // Block is out-of-flow, it can have inline siblings if necessary. + if ((layout_node.is_absolutely_positioned() || layout_node.is_floating()) && layout_parent.last_child()->children_are_inline() && layout_parent.last_child()->is_anonymous()) { return *layout_parent.last_child(); } @@ -95,6 +93,11 @@ static Layout::Node& insertion_parent_for_block_node(Layout::NodeWithStyle& layo return layout_parent; } + if (layout_node.is_absolutely_positioned() || layout_node.is_floating()) { + // Block is out-of-flow, it can have inline siblings if necessary. + return layout_parent; + } + // Parent block has inline-level children (our siblings). // First move these siblings into an anonymous wrapper block. Vector<JS::Handle<Layout::Node>> children; |