|
@@ -220,14 +220,16 @@ void LayoutState::UsedValues::set_node(NodeWithStyleAndBoxModelMetrics& node, Us
|
|
|
}
|
|
|
|
|
|
if (size.is_length() && size.length().is_calculated()) {
|
|
|
- if (width && size.length().calculated_style_value()->contains_percentage() && containing_block_has_definite_size) {
|
|
|
+ if (size.length().calculated_style_value()->contains_percentage()) {
|
|
|
+ if (!containing_block_has_definite_size)
|
|
|
+ return false;
|
|
|
auto& calc_value = *size.length().calculated_style_value();
|
|
|
- auto containing_block_width_as_length = CSS::Length::make_px(containing_block_used_values->content_width());
|
|
|
- resolved_definite_size = calc_value.resolve_length_percentage(node, containing_block_width_as_length).value_or(CSS::Length::make_auto()).to_px(node);
|
|
|
- return false;
|
|
|
+ auto containing_block_size_as_length = width
|
|
|
+ ? CSS::Length::make_px(containing_block_used_values->content_width())
|
|
|
+ : CSS::Length::make_px(containing_block_used_values->content_height());
|
|
|
+ resolved_definite_size = calc_value.resolve_length_percentage(node, containing_block_size_as_length).value_or(CSS::Length::make_auto()).to_px(node);
|
|
|
+ return true;
|
|
|
}
|
|
|
- if (size.length().calculated_style_value()->contains_percentage())
|
|
|
- return false;
|
|
|
resolved_definite_size = size.length().to_px(node);
|
|
|
return true;
|
|
|
}
|