Bladeren bron

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.
Andreas Kling 3 jaren geleden
bovenliggende
commit
2f3d7a7c36
1 gewijzigde bestanden met toevoegingen van 12 en 0 verwijderingen
  1. 12 0
      Userland/Libraries/LibWeb/Layout/FormattingContext.cpp

+ 12 - 0
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;
 }