mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
LibWeb: Prefer transitioned property values over important
CSS transitions have a higher precedence in the cascade than important properties
This commit is contained in:
parent
9afb523be3
commit
63538c8a75
Notes:
github-actions[bot]
2025-11-28 16:17:06 +00:00
Author: https://github.com/Calme1709
Commit: 63538c8a75
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6837
Reviewed-by: https://github.com/AtkinsSJ ✅
8 changed files with 89 additions and 18 deletions
|
|
@ -92,6 +92,14 @@ bool ComputedProperties::is_animated_property_inherited(PropertyID property_id)
|
|||
return m_animated_property_inherited[n / 8] & (1 << (n % 8));
|
||||
}
|
||||
|
||||
bool ComputedProperties::is_animated_property_result_of_transition(PropertyID property_id) const
|
||||
{
|
||||
VERIFY(property_id >= first_longhand_property_id && property_id <= last_longhand_property_id);
|
||||
|
||||
size_t n = to_underlying(property_id) - to_underlying(first_longhand_property_id);
|
||||
return m_animated_property_result_of_transition[n / 8] & (1 << (n % 8));
|
||||
}
|
||||
|
||||
void ComputedProperties::set_property_inherited(PropertyID property_id, Inherited inherited)
|
||||
{
|
||||
VERIFY(property_id >= first_longhand_property_id && property_id <= last_longhand_property_id);
|
||||
|
|
@ -114,6 +122,17 @@ void ComputedProperties::set_animated_property_inherited(PropertyID property_id,
|
|||
m_animated_property_inherited[n / 8] &= ~(1 << (n % 8));
|
||||
}
|
||||
|
||||
void ComputedProperties::set_animated_property_result_of_transition(PropertyID property_id, AnimatedPropertyResultOfTransition animated_value_result_of_transition)
|
||||
{
|
||||
VERIFY(property_id >= first_longhand_property_id && property_id <= last_longhand_property_id);
|
||||
|
||||
size_t n = to_underlying(property_id) - to_underlying(first_longhand_property_id);
|
||||
if (animated_value_result_of_transition == AnimatedPropertyResultOfTransition::Yes)
|
||||
m_animated_property_result_of_transition[n / 8] |= (1 << (n % 8));
|
||||
else
|
||||
m_animated_property_result_of_transition[n / 8] &= ~(1 << (n % 8));
|
||||
}
|
||||
|
||||
void ComputedProperties::set_property(PropertyID id, NonnullRefPtr<StyleValue const> value, Inherited inherited, Important important)
|
||||
{
|
||||
VERIFY(id >= first_longhand_property_id && id <= last_longhand_property_id);
|
||||
|
|
@ -149,10 +168,11 @@ void ComputedProperties::set_display_before_box_type_transformation(Display valu
|
|||
m_display_before_box_type_transformation = value;
|
||||
}
|
||||
|
||||
void ComputedProperties::set_animated_property(PropertyID id, NonnullRefPtr<StyleValue const> value, Inherited inherited)
|
||||
void ComputedProperties::set_animated_property(PropertyID id, NonnullRefPtr<StyleValue const> value, AnimatedPropertyResultOfTransition animated_property_result_of_transition, Inherited inherited)
|
||||
{
|
||||
m_animated_property_values.set(id, move(value));
|
||||
set_animated_property_inherited(id, inherited);
|
||||
set_animated_property_result_of_transition(id, animated_property_result_of_transition);
|
||||
}
|
||||
|
||||
void ComputedProperties::remove_animated_property(PropertyID id)
|
||||
|
|
@ -172,8 +192,8 @@ StyleValue const& ComputedProperties::property(PropertyID property_id, WithAnima
|
|||
{
|
||||
VERIFY(property_id >= first_longhand_property_id && property_id <= last_longhand_property_id);
|
||||
|
||||
// Important properties override animated properties
|
||||
if (!is_property_important(property_id) && return_animated_value == WithAnimationsApplied::Yes) {
|
||||
// Important properties override animated but not transitioned properties
|
||||
if ((!is_property_important(property_id) || is_animated_property_result_of_transition(property_id)) && return_animated_value == WithAnimationsApplied::Yes) {
|
||||
if (auto animated_value = m_animated_property_values.get(property_id); animated_value.has_value())
|
||||
return *animated_value.value();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue