Skip to content

Commit c48931d

Browse files
committed
LibWeb: Only calculate intrinsic size in the desired flex axis
Previously, FlexFormattingContext would calculate intrinsic sizes in both axes simultaneously, despite only one being needed. This patch reduces the amount of unnecessary work by only calculating the requested intrinsic size.
1 parent 4d84e34 commit c48931d

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,15 +1396,13 @@ void FlexFormattingContext::copy_dimensions_from_flex_items_to_boxes()
13961396
// https://drafts.csswg.org/css-flexbox-1/#intrinsic-sizes
13971397
void FlexFormattingContext::determine_intrinsic_size_of_flex_container()
13981398
{
1399-
float main_size = calculate_intrinsic_main_size_of_flex_container();
1400-
float cross_size = calculate_intrinsic_cross_size_of_flex_container();
1401-
1402-
if (is_row_layout()) {
1403-
m_flex_container_state.set_content_width(main_size);
1404-
m_flex_container_state.set_content_height(cross_size);
1405-
} else {
1406-
m_flex_container_state.set_content_height(main_size);
1407-
m_flex_container_state.set_content_width(cross_size);
1399+
if (m_available_space_for_flex_container->main.is_intrinsic_sizing_constraint()) {
1400+
float main_size = calculate_intrinsic_main_size_of_flex_container();
1401+
set_main_size(flex_container(), main_size);
1402+
}
1403+
if (m_available_space_for_items->cross.is_intrinsic_sizing_constraint()) {
1404+
float cross_size = calculate_intrinsic_cross_size_of_flex_container();
1405+
set_cross_size(flex_container(), cross_size);
14081406
}
14091407
}
14101408

0 commit comments

Comments
 (0)