diff --git a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index 77f83835c20..98da121b0ba 100644 --- a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -265,6 +265,12 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const& } else { width = zero_value; } + } else if (available_space.width.is_min_content()) { + width = CSS::Length::make_px(calculate_min_content_width(box)); + } else if (available_space.width.is_max_content()) { + width = CSS::Length::make_px(calculate_max_content_width(box)); + } else { + VERIFY_NOT_REACHED(); } } else { if (!margin_left.is_auto() && !margin_right.is_auto()) { @@ -304,8 +310,7 @@ void BlockFormattingContext::compute_width(Box const& box, AvailableSpace const& // but this time using the computed value of 'max-width' as the computed value for 'width'. if (!should_treat_max_width_as_none(box, available_space.width)) { auto max_width = calculate_inner_width(box, remaining_available_space.width, computed_values.max_width()); - auto used_width_px = used_width.is_auto() ? CSSPixels { 0 } : used_width.to_px(box); - if (used_width_px > max_width) { + if (used_width.to_px(box) > max_width) { used_width = try_compute_width(CSS::Length::make_px(max_width)); } } diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/max-width-on-block-level-box-that-creates-fc.txt b/Tests/LibWeb/Layout/expected/block-and-inline/max-width-on-block-level-box-that-creates-fc.txt new file mode 100644 index 00000000000..3dd1002272b --- /dev/null +++ b/Tests/LibWeb/Layout/expected/block-and-inline/max-width-on-block-level-box-that-creates-fc.txt @@ -0,0 +1,25 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x16 [BFC] children: not-inline + BlockContainer
at (8,8) content-size 784x0 children: not-inline + BlockContainer