Explorar el Código

LibWeb: Compute height early when possible for floating boxes

This is preparation for the next commit, which will make flex layout
relinquish control of the flex container cross size to the parent
formatting context.
Andreas Kling hace 1 año
padre
commit
ca53eefe11
Se han modificado 1 ficheros con 5 adiciones y 0 borrados
  1. 5 0
      Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp

+ 5 - 0
Userland/Libraries/LibWeb/Layout/BlockFormattingContext.cpp

@@ -914,6 +914,11 @@ void BlockFormattingContext::layout_floating_box(Box const& box, BlockContainer
     resolve_vertical_box_model_metrics(box);
     resolve_vertical_box_model_metrics(box);
 
 
     compute_width(box, available_space, layout_mode);
     compute_width(box, available_space, layout_mode);
+
+    // NOTE: Flex containers with `auto` height are treated as `max-content`, so we can compute their height early.
+    if (box.is_replaced_box() || box.display().is_flex_inside())
+        compute_height(box, available_space);
+
     auto independent_formatting_context = layout_inside(box, layout_mode, box_state.available_inner_space_or_constraints_from(available_space));
     auto independent_formatting_context = layout_inside(box, layout_mode, box_state.available_inner_space_or_constraints_from(available_space));
     compute_height(box, available_space);
     compute_height(box, available_space);