From cc33a57620574658425f240c715f2107c6d02433 Mon Sep 17 00:00:00 2001 From: matcool <26722564+matcool@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:26:13 -0300 Subject: [PATCH] LibWeb: Use intrinsic aspect ratio when calculating max content height --- .../flex-item-on-row-with-intrinsic-aspect-ratio.txt | 4 ++++ ...flex-item-on-row-with-intrinsic-aspect-ratio.html | 12 ++++++++++++ .../Libraries/LibWeb/Layout/FormattingContext.cpp | 3 +++ 3 files changed, 19 insertions(+) create mode 100644 Tests/LibWeb/Layout/expected/flex-item-on-row-with-intrinsic-aspect-ratio.txt create mode 100644 Tests/LibWeb/Layout/input/flex-item-on-row-with-intrinsic-aspect-ratio.html diff --git a/Tests/LibWeb/Layout/expected/flex-item-on-row-with-intrinsic-aspect-ratio.txt b/Tests/LibWeb/Layout/expected/flex-item-on-row-with-intrinsic-aspect-ratio.txt new file mode 100644 index 0000000000..6da0287415 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/flex-item-on-row-with-intrinsic-aspect-ratio.txt @@ -0,0 +1,4 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x200 children: not-inline + Box at (0,0) content-size 800x200 flex-container(row) children: not-inline + ImageBox at (0,0) content-size 400x200 flex-item children: not-inline diff --git a/Tests/LibWeb/Layout/input/flex-item-on-row-with-intrinsic-aspect-ratio.html b/Tests/LibWeb/Layout/input/flex-item-on-row-with-intrinsic-aspect-ratio.html new file mode 100644 index 0000000000..ed59d6391e --- /dev/null +++ b/Tests/LibWeb/Layout/input/flex-item-on-row-with-intrinsic-aspect-ratio.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp index 803b051940..421643823e 100644 --- a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp @@ -1205,6 +1205,9 @@ CSSPixels FormattingContext::calculate_min_content_height(Layout::Box const& box CSSPixels FormattingContext::calculate_max_content_height(Layout::Box const& box, AvailableSize const& available_width) const { + if (box.has_intrinsic_aspect_ratio() && available_width.is_definite()) + return available_width.to_px() / *box.intrinsic_aspect_ratio(); + if (box.has_intrinsic_height()) return *box.intrinsic_height();