浏览代码

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 1 年之前
父节点
当前提交
ca53eefe11
共有 1 个文件被更改,包括 5 次插入0 次删除
  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);
 
     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));
     compute_height(box, available_space);