mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-05 06:32:30 +02:00
LibWeb: Consolidate transition computation
Previously the logic to compute transitions was split across `ComputedProperties`, `StyleComputer`, and `Animatable` - this commit consolidates it all in `ComputedProperties`
This commit is contained in:
Notes:
github-actions[bot]
2026-01-05 11:36:59 +00:00
Author: https://github.com/Calme1709 Commit: https://github.com/LadybirdBrowser/ladybird/commit/558f0340075 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/7255 Reviewed-by: https://github.com/AtkinsSJ ✅
@@ -1032,54 +1032,7 @@ static void compute_transitioned_properties(ComputedProperties const& style, DOM
|
||||
return;
|
||||
}
|
||||
|
||||
auto coordinated_transition_list = style.assemble_coordinated_value_list(
|
||||
PropertyID::TransitionProperty,
|
||||
{ PropertyID::TransitionProperty, PropertyID::TransitionDuration, PropertyID::TransitionTimingFunction, PropertyID::TransitionDelay, PropertyID::TransitionBehavior });
|
||||
|
||||
auto transition_properties = coordinated_transition_list.get(PropertyID::TransitionProperty).value();
|
||||
Vector<Vector<PropertyID>> properties;
|
||||
|
||||
for (size_t i = 0; i < transition_properties.size(); i++) {
|
||||
auto property_value = transition_properties[i];
|
||||
Vector<PropertyID> properties_for_this_transition;
|
||||
|
||||
auto const append_property_mapping_logical_aliases = [&](PropertyID property_id) {
|
||||
if (property_is_logical_alias(property_id))
|
||||
properties_for_this_transition.append(map_logical_alias_to_physical_property(property_id, LogicalAliasMappingContext { style.writing_mode(), style.direction() }));
|
||||
else if (property_id != PropertyID::Custom)
|
||||
properties_for_this_transition.append(property_id);
|
||||
};
|
||||
|
||||
if (property_value->is_keyword()) {
|
||||
VERIFY(property_value->to_keyword() == Keyword::None);
|
||||
properties.append({});
|
||||
continue;
|
||||
} else {
|
||||
auto maybe_property = property_id_from_string(property_value->as_custom_ident().custom_ident());
|
||||
if (!maybe_property.has_value()) {
|
||||
properties.append({});
|
||||
continue;
|
||||
}
|
||||
|
||||
auto transition_property = maybe_property.release_value();
|
||||
if (property_is_shorthand(transition_property)) {
|
||||
for (auto const& prop : expanded_longhands_for_shorthand(transition_property))
|
||||
append_property_mapping_logical_aliases(prop);
|
||||
} else {
|
||||
append_property_mapping_logical_aliases(transition_property);
|
||||
}
|
||||
}
|
||||
|
||||
properties.append(move(properties_for_this_transition));
|
||||
}
|
||||
|
||||
element.add_transitioned_properties(
|
||||
pseudo_element,
|
||||
move(properties),
|
||||
move(coordinated_transition_list.get(PropertyID::TransitionDelay).value()),
|
||||
move(coordinated_transition_list.get(PropertyID::TransitionDuration).value()),
|
||||
move(coordinated_transition_list.get(PropertyID::TransitionTimingFunction).value()),
|
||||
move(coordinated_transition_list.get(PropertyID::TransitionBehavior).value()));
|
||||
element.add_transitioned_properties(pseudo_element, style.transitions());
|
||||
}
|
||||
|
||||
// https://drafts.csswg.org/css-transitions/#starting
|
||||
|
||||
Reference in New Issue
Block a user