From 2f3d7a7c36f6a30dac99c586d30aa9145234e11a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 12 Mar 2022 18:29:36 +0100 Subject: [PATCH] LibWeb: Swap min-content and max-content intrinsic sizes if needed I'm a little confused about intrinsic heights *really* work, and I'm struggling to extract that information from the spec. In the meantime, let's ensure that min-content is always smaller than (or equal to) max-content so that other math works as expected. --- .../Libraries/LibWeb/Layout/FormattingContext.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp index 03cf9bc5cf..767d93d876 100644 --- a/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FormattingContext.cpp @@ -846,6 +846,18 @@ FormattingState::IntrinsicSizes FormattingContext::calculate_intrinsic_sizes(Lay cached_box_sizes.min_content_size.set_height(BlockFormattingContext::compute_theoretical_height(throwaway_state, box)); } + if (cached_box_sizes.min_content_size.width() > cached_box_sizes.max_content_size.width()) { + float tmp = cached_box_sizes.min_content_size.width(); + cached_box_sizes.min_content_size.set_width(cached_box_sizes.max_content_size.width()); + cached_box_sizes.max_content_size.set_width(tmp); + } + + if (cached_box_sizes.min_content_size.height() > cached_box_sizes.max_content_size.height()) { + float tmp = cached_box_sizes.min_content_size.height(); + cached_box_sizes.min_content_size.set_height(cached_box_sizes.max_content_size.height()); + cached_box_sizes.max_content_size.set_height(tmp); + } + return cached_box_sizes; }