diff --git a/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index 98c151d9d0..1dec4f6af4 100644 --- a/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/FlexFormattingContext.cpp @@ -22,6 +22,14 @@ CSSPixels FlexFormattingContext::get_pixel_width(FlexItem const& item, CSS::Size CSSPixels FlexFormattingContext::get_pixel_height(FlexItem const& item, CSS::Size const& size) const { + if (is_row_layout()) { + // NOTE: In a row layout, after we've determined the main size, we use that as the available width + // for any intrinsic sizing layout needed to resolve the height. + auto available_width = item.main_size.has_value() ? AvailableSize::make_definite(item.main_size.value()) : AvailableSize::make_indefinite(); + auto available_height = AvailableSize::make_indefinite(); + auto available_space = AvailableSpace { available_width, available_height }; + return calculate_inner_height(item.box, available_space, size); + } return calculate_inner_height(item.box, m_available_space.value(), size); } diff --git a/Tests/LibWeb/Layout/expected/flex/row-item-with-intrinsic-keyword-for-height.txt b/Tests/LibWeb/Layout/expected/flex/row-item-with-intrinsic-keyword-for-height.txt new file mode 100644 index 0000000000..94bfd3f645 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/flex/row-item-with-intrinsic-keyword-for-height.txt @@ -0,0 +1,20 @@ +Viewport <#document> at [0,0] [0+0+0 800 0+0+0] [0+0+0 600 0+0+0] children: not-inline + BlockContainer at [0,0] [0+0+0 800 0+0+0] [0+0+0 52 0+0+0] [BFC] children: not-inline + Box
at [8,8] flex-container(row) [8+0+0 80 0+0+712] [8+0+0 36 0+0+8] [FFC] children: not-inline + BlockContainer