1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:48:10 +00:00

LibWeb: Treat cyclic percentage max-size as "auto" on the flex container

This allows things like `max-width: 100%` to work on flex containers
whose containing blocks themselves have automatic width.
This commit is contained in:
Andreas Kling 2022-08-27 11:44:10 +02:00
parent f03f70a84a
commit e65990f7a3

View file

@ -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());