Browse Source

LibWeb: Flex-items aren't affected by float nor clear

There are a few other things to notice, but they don't seem to be
implemented yet.
Tobias Christiansen 4 years ago
parent
commit
72d5394b8c

+ 3 - 2
Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp

@@ -506,9 +506,10 @@ void BlockFormattingContext::place_block_level_non_replaced_element_in_normal_fl
         }
     };
 
-    if (computed_values.clear() == CSS::Clear::Left || computed_values.clear() == CSS::Clear::Both)
+    // Flex-items don't float and also don't clear.
+    if ((computed_values.clear() == CSS::Clear::Left || computed_values.clear() == CSS::Clear::Both) && !child_box.is_flex_item())
         clear_floating_boxes(m_left_floating_boxes);
-    if (computed_values.clear() == CSS::Clear::Right || computed_values.clear() == CSS::Clear::Both)
+    if ((computed_values.clear() == CSS::Clear::Right || computed_values.clear() == CSS::Clear::Both) && !child_box.is_flex_item())
         clear_floating_boxes(m_right_floating_boxes);
 
     child_box.set_offset(x, y);

+ 3 - 0
Userland/Libraries/LibWeb/Layout/Node.cpp

@@ -169,6 +169,9 @@ bool Node::is_floating() const
 {
     if (!has_style())
         return false;
+    // flex-items don't float.
+    if (is_flex_item())
+        return false;
     return computed_values().float_() != CSS::Float::None;
 }