mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
LibWeb: Dont overwrite animated values in recompute_inherited_style
Previously we assumed that if the non-animated value was inherited then the animated value must be also which is not true.
This commit is contained in:
parent
a984ff4f58
commit
9d49fcc87b
Notes:
github-actions[bot]
2025-11-28 16:17:40 +00:00
Author: https://github.com/Calme1709
Commit: 9d49fcc87b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6837
Reviewed-by: https://github.com/AtkinsSJ ✅
3 changed files with 53 additions and 9 deletions
|
|
@ -859,17 +859,19 @@ CSS::RequiredInvalidationAfterStyleChange Element::recompute_inherited_style()
|
|||
if (!computed_properties->is_property_inherited(property_id))
|
||||
continue;
|
||||
|
||||
RefPtr<CSS::StyleValue const> old_animated_value = computed_properties->animated_property_values().get(property_id).value_or({});
|
||||
RefPtr<CSS::StyleValue const> new_animated_value = CSS::StyleComputer::get_animated_inherit_value(property_id, { *this })
|
||||
.map([](auto&& value) { return value.ptr(); })
|
||||
.value_or({});
|
||||
if (computed_properties->is_animated_property_inherited(property_id) || !computed_properties->animated_property_values().contains(property_id)) {
|
||||
RefPtr<CSS::StyleValue const> old_animated_value = computed_properties->animated_property_values().get(property_id).value_or({});
|
||||
RefPtr<CSS::StyleValue const> new_animated_value = CSS::StyleComputer::get_animated_inherit_value(property_id, { *this })
|
||||
.map([](auto&& value) { return value.ptr(); })
|
||||
.value_or({});
|
||||
|
||||
invalidation |= CSS::compute_property_invalidation(property_id, old_animated_value, new_animated_value);
|
||||
invalidation |= CSS::compute_property_invalidation(property_id, old_animated_value, new_animated_value);
|
||||
|
||||
if (new_animated_value)
|
||||
computed_properties->set_animated_property(property_id, new_animated_value.release_nonnull(), CSS::ComputedProperties::Inherited::Yes);
|
||||
else if (old_animated_value && computed_properties->is_animated_property_inherited(property_id))
|
||||
computed_properties->remove_animated_property(property_id);
|
||||
if (new_animated_value)
|
||||
computed_properties->set_animated_property(property_id, new_animated_value.release_nonnull(), CSS::ComputedProperties::Inherited::Yes);
|
||||
else if (old_animated_value)
|
||||
computed_properties->remove_animated_property(property_id);
|
||||
}
|
||||
|
||||
RefPtr new_value = CSS::StyleComputer::get_non_animated_inherit_value(property_id, { *this });
|
||||
computed_properties->set_property(property_id, *new_value, CSS::ComputedProperties::Inherited::Yes);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue