Explorar el Código

LibWeb: Take used width into account for flex item intrinsic heights

If we've already established the used width for a flex item, we need
to take it into account when calculating the min-content and max-content
heights for that item.

We were already doing this when calculating cross sizes. This patch adds
the same consideration for main sizes.
Andreas Kling hace 2 años
padre
commit
1ea276bf6d
Se han modificado 1 ficheros con 12 adiciones y 6 borrados
  1. 12 6
      Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp

+ 12 - 6
Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp

@@ -1846,7 +1846,18 @@ CSSPixels FlexFormattingContext::calculate_cross_max_content_contribution(FlexIt
 
 CSSPixels FlexFormattingContext::calculate_min_content_main_size(FlexItem const& item) const
 {
-    return is_row_layout() ? calculate_min_content_width(item.box) : calculate_min_content_height(item.box, m_available_space_for_items->space.width);
+    if (is_row_layout()) {
+        return calculate_min_content_width(item.box);
+    }
+    return calculate_min_content_height(item.box, item.cross_size.has_value() ? AvailableSize::make_definite(item.cross_size.value()) : AvailableSize::make_indefinite());
+}
+
+CSSPixels FlexFormattingContext::calculate_max_content_main_size(FlexItem const& item) const
+{
+    if (is_row_layout()) {
+        return calculate_max_content_width(item.box);
+    }
+    return calculate_max_content_height(item.box, item.cross_size.has_value() ? AvailableSize::make_definite(item.cross_size.value()) : AvailableSize::make_indefinite());
 }
 
 CSSPixels FlexFormattingContext::calculate_fit_content_main_size(FlexItem const& item) const
@@ -1861,11 +1872,6 @@ CSSPixels FlexFormattingContext::calculate_fit_content_cross_size(FlexItem const
                             : calculate_fit_content_height(item.box, m_available_space_for_items->space);
 }
 
-CSSPixels FlexFormattingContext::calculate_max_content_main_size(FlexItem const& item) const
-{
-    return is_row_layout() ? calculate_max_content_width(item.box) : calculate_max_content_height(item.box, m_available_space_for_items->space.width);
-}
-
 CSSPixels FlexFormattingContext::calculate_min_content_cross_size(FlexItem const& item) const
 {
     if (is_row_layout()) {