mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-22 17:29:01 +00:00
LibWeb: Handle color: currentcolor
in compute_properties
This was the last thing that `compute_defaulted_values` was doing when called from here. It also comes with the added benefit of us correctly inheriting animated colors.
This commit is contained in:
parent
48832972b1
commit
b267012ba7
Notes:
github-actions[bot]
2025-08-21 11:50:38 +00:00
Author: https://github.com/Calme1709
Commit: b267012ba7
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5927
Reviewed-by: https://github.com/gmta ✅
1 changed files with 8 additions and 15 deletions
|
@ -1752,14 +1752,6 @@ void StyleComputer::compute_defaulted_values(ComputedProperties& style, DOM::Ele
|
||||||
auto property_id = (CSS::PropertyID)i;
|
auto property_id = (CSS::PropertyID)i;
|
||||||
compute_defaulted_property_value(style, element, property_id, pseudo_element);
|
compute_defaulted_property_value(style, element, property_id, pseudo_element);
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.w3.org/TR/css-color-4/#resolving-other-colors
|
|
||||||
// In the color property, the used value of currentcolor is the inherited value.
|
|
||||||
auto const& color = style.property(CSS::PropertyID::Color);
|
|
||||||
if (color.to_keyword() == Keyword::Currentcolor) {
|
|
||||||
auto const& inherited_value = get_inherit_value(CSS::PropertyID::Color, element, pseudo_element);
|
|
||||||
style.set_property(CSS::PropertyID::Color, inherited_value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Length::FontMetrics StyleComputer::calculate_root_element_font_metrics(ComputedProperties const& style) const
|
Length::FontMetrics StyleComputer::calculate_root_element_font_metrics(ComputedProperties const& style) const
|
||||||
|
@ -2685,6 +2677,10 @@ GC::Ref<ComputedProperties> StyleComputer::compute_properties(DOM::Element& elem
|
||||||
// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial.
|
// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial.
|
||||||
should_inherit |= value && value->is_unset() && is_inherited_property(property_id);
|
should_inherit |= value && value->is_unset() && is_inherited_property(property_id);
|
||||||
|
|
||||||
|
// https://www.w3.org/TR/css-color-4/#resolving-other-colors
|
||||||
|
// In the color property, the used value of currentcolor is the resolved inherited value.
|
||||||
|
should_inherit |= property_id == PropertyID::Color && value && value->to_keyword() == Keyword::Currentcolor;
|
||||||
|
|
||||||
// FIXME: Logical properties should inherit from their parent's equivalent unmapped logical property.
|
// FIXME: Logical properties should inherit from their parent's equivalent unmapped logical property.
|
||||||
if (should_inherit) {
|
if (should_inherit) {
|
||||||
value = get_inherit_value(property_id, &element, pseudo_element);
|
value = get_inherit_value(property_id, &element, pseudo_element);
|
||||||
|
@ -2786,20 +2782,17 @@ GC::Ref<ComputedProperties> StyleComputer::compute_properties(DOM::Element& elem
|
||||||
// 4. Absolutize values, turning font/viewport relative lengths into absolute lengths
|
// 4. Absolutize values, turning font/viewport relative lengths into absolute lengths
|
||||||
absolutize_values(computed_style, element);
|
absolutize_values(computed_style, element);
|
||||||
|
|
||||||
// 5. Default the values, applying inheritance and 'initial' as needed
|
// 5. Run automatic box type transformations
|
||||||
compute_defaulted_values(computed_style, &element, pseudo_element);
|
|
||||||
|
|
||||||
// 6. Run automatic box type transformations
|
|
||||||
transform_box_type_if_needed(computed_style, element, pseudo_element);
|
transform_box_type_if_needed(computed_style, element, pseudo_element);
|
||||||
|
|
||||||
// 7. Apply any property-specific computed value logic
|
// 6. Apply any property-specific computed value logic
|
||||||
resolve_effective_overflow_values(computed_style);
|
resolve_effective_overflow_values(computed_style);
|
||||||
compute_text_align(computed_style, element, pseudo_element);
|
compute_text_align(computed_style, element, pseudo_element);
|
||||||
|
|
||||||
// 8. Let the element adjust computed style
|
// 7. Let the element adjust computed style
|
||||||
element.adjust_computed_style(computed_style);
|
element.adjust_computed_style(computed_style);
|
||||||
|
|
||||||
// 9. Transition declarations [css-transitions-1]
|
// 8. Transition declarations [css-transitions-1]
|
||||||
// Theoretically this should be part of the cascade, but it works with computed values, which we don't have until now.
|
// Theoretically this should be part of the cascade, but it works with computed values, which we don't have until now.
|
||||||
compute_transitioned_properties(computed_style, element, pseudo_element);
|
compute_transitioned_properties(computed_style, element, pseudo_element);
|
||||||
if (auto previous_style = element.computed_properties(pseudo_element)) {
|
if (auto previous_style = element.computed_properties(pseudo_element)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue