diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index 8fb51518c0..74ce95d209 100644 --- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp @@ -541,9 +541,15 @@ void FlexFormattingContext::determine_available_main_and_cross_space(bool& main_ main_available_space = specified_main_size(flex_container()); } else { if (has_main_max_size(flex_container())) { - main_max_size = specified_main_max_size(flex_container()); - main_available_space = main_max_size; - main_is_constrained = true; + bool main_max_size_behaves_like_auto = false; + if (computed_main_max_size(flex_container()).is_percentage()) + main_max_size_behaves_like_auto = !has_definite_main_size(*flex_container().containing_block()); + + if (!main_max_size_behaves_like_auto) { + main_max_size = specified_main_max_size(flex_container()); + main_available_space = main_max_size; + main_is_constrained = true; + } } if (has_main_min_size(flex_container())) { main_min_size = specified_main_min_size(flex_container()); @@ -567,8 +573,15 @@ void FlexFormattingContext::determine_available_main_and_cross_space(bool& main_ cross_available_space = specified_cross_size(flex_container()); } else { if (has_cross_max_size(flex_container())) { - cross_max_size = specified_cross_max_size(flex_container()); - cross_is_constrained = true; + + bool cross_max_size_behaves_like_auto = false; + if (computed_cross_max_size(flex_container()).is_percentage()) + cross_max_size_behaves_like_auto = !has_definite_cross_size(*flex_container().containing_block()); + + if (!cross_max_size_behaves_like_auto) { + cross_max_size = specified_cross_max_size(flex_container()); + cross_is_constrained = true; + } } if (has_cross_min_size(flex_container())) { cross_min_size = specified_cross_min_size(flex_container());