1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:57:44 +00:00

LibWeb/CSS: Resolve percentages in NumericCalculationNode

Percentages should be resolved against the provided percentage basis
instead of just returning the underlying value.

Fixes https://github.com/SerenityOS/serenity/issues/22654
This commit is contained in:
Aliaksandr Kalenik 2024-01-08 15:11:55 +01:00 committed by Sam Atkins
parent 5e7e98cd3c
commit 3f52d6045a
3 changed files with 33 additions and 1 deletions

View file

@ -217,8 +217,18 @@ bool NumericCalculationNode::contains_percentage() const
return m_value.has<Percentage>();
}
CalculatedStyleValue::CalculationResult NumericCalculationNode::resolve(Optional<Length::ResolutionContext const&>, CalculatedStyleValue::PercentageBasis const&) const
CalculatedStyleValue::CalculationResult NumericCalculationNode::resolve(Optional<Length::ResolutionContext const&>, CalculatedStyleValue::PercentageBasis const& percentage_basis) const
{
if (m_value.has<Percentage>()) {
return percentage_basis.visit(
[&](Empty const&) -> CalculatedStyleValue::CalculationResult {
VERIFY_NOT_REACHED();
},
[&](auto const& value) {
return CalculatedStyleValue::CalculationResult(value.percentage_of(m_value.get<Percentage>()));
});
}
return m_value;
}