diff --git a/Tests/LibWeb/Layout/expected/flex/stretch-alignment-with-cross-gap.txt b/Tests/LibWeb/Layout/expected/flex/stretch-alignment-with-cross-gap.txt new file mode 100644 index 0000000000..3e244f8c6c --- /dev/null +++ b/Tests/LibWeb/Layout/expected/flex/stretch-alignment-with-cross-gap.txt @@ -0,0 +1,10 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (1,1) content-size 798x220 children: not-inline + BlockContainer at (10,10) content-size 780x202 children: not-inline + Box at (11,11) content-size 300x200 flex-container(row) children: not-inline + BlockContainer
at (12,12) content-size 100x20 flex-item children: not-inline + BlockContainer
at (114,12) content-size 100x20 flex-item children: not-inline + BlockContainer
at (12,95.333328) content-size 100x20 flex-item children: not-inline + BlockContainer
at (114,95.333328) content-size 100x20 flex-item children: not-inline + BlockContainer
at (12,178.666656) content-size 100x20 flex-item children: not-inline + BlockContainer
at (114,178.666656) content-size 100x20 flex-item children: not-inline diff --git a/Tests/LibWeb/Layout/input/flex/stretch-alignment-with-cross-gap.html b/Tests/LibWeb/Layout/input/flex/stretch-alignment-with-cross-gap.html new file mode 100644 index 0000000000..bb064ff4bb --- /dev/null +++ b/Tests/LibWeb/Layout/input/flex/stretch-alignment-with-cross-gap.html @@ -0,0 +1,17 @@ +
\ No newline at end of file diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index 999e8185b3..c18e2f781f 100644 --- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp @@ -2022,6 +2022,9 @@ void FlexFormattingContext::handle_align_content_stretch() for (auto& line : m_flex_lines) sum_of_flex_line_cross_sizes += line.cross_size; + // CSS-FLEXBOX-2: Account for gap between flex lines. + sum_of_flex_line_cross_sizes += cross_gap() * (m_flex_lines.size() - 1); + if (sum_of_flex_line_cross_sizes >= inner_cross_size(flex_container())) return;