diff --git a/Libraries/LibWeb/CSS/StyleComputer.cpp b/Libraries/LibWeb/CSS/StyleComputer.cpp index 752f301b436..87b0e9d38e7 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -940,31 +940,38 @@ void StyleComputer::for_each_property_expanding_shorthands(PropertyID property_i } if (property_id == CSS::PropertyID::Transition) { - if (!value.is_transition()) { + if (value.to_keyword() == Keyword::None) { // Handle `none` as a shorthand for `all 0s ease 0s`. set_longhand_property(CSS::PropertyID::TransitionProperty, CSSKeywordValue::create(Keyword::All)); set_longhand_property(CSS::PropertyID::TransitionDuration, TimeStyleValue::create(CSS::Time::make_seconds(0))); set_longhand_property(CSS::PropertyID::TransitionDelay, TimeStyleValue::create(CSS::Time::make_seconds(0))); set_longhand_property(CSS::PropertyID::TransitionTimingFunction, EasingStyleValue::create(EasingStyleValue::CubicBezier::ease())); set_longhand_property(CSS::PropertyID::TransitionBehavior, CSSKeywordValue::create(Keyword::Normal)); - return; - } - auto const& transitions = value.as_transition().transitions(); - Array>, 5> transition_values; - for (auto const& transition : transitions) { - transition_values[0].append(*transition.property_name); - transition_values[1].append(transition.duration.as_style_value()); - transition_values[2].append(transition.delay.as_style_value()); - if (transition.easing) - transition_values[3].append(*transition.easing); - transition_values[4].append(CSSKeywordValue::create(to_keyword(transition.transition_behavior))); + } else if (value.is_transition()) { + auto const& transitions = value.as_transition().transitions(); + Array>, 5> transition_values; + for (auto const& transition : transitions) { + transition_values[0].append(*transition.property_name); + transition_values[1].append(transition.duration.as_style_value()); + transition_values[2].append(transition.delay.as_style_value()); + if (transition.easing) + transition_values[3].append(*transition.easing); + transition_values[4].append(CSSKeywordValue::create(to_keyword(transition.transition_behavior))); + } + + set_longhand_property(CSS::PropertyID::TransitionProperty, StyleValueList::create(move(transition_values[0]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionDuration, StyleValueList::create(move(transition_values[1]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionDelay, StyleValueList::create(move(transition_values[2]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionTimingFunction, StyleValueList::create(move(transition_values[3]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionBehavior, StyleValueList::create(move(transition_values[4]), StyleValueList::Separator::Comma)); + } else { + set_longhand_property(CSS::PropertyID::TransitionProperty, value); + set_longhand_property(CSS::PropertyID::TransitionDuration, value); + set_longhand_property(CSS::PropertyID::TransitionDelay, value); + set_longhand_property(CSS::PropertyID::TransitionTimingFunction, value); + set_longhand_property(CSS::PropertyID::TransitionBehavior, value); } - set_longhand_property(CSS::PropertyID::TransitionProperty, StyleValueList::create(move(transition_values[0]), StyleValueList::Separator::Comma)); - set_longhand_property(CSS::PropertyID::TransitionDuration, StyleValueList::create(move(transition_values[1]), StyleValueList::Separator::Comma)); - set_longhand_property(CSS::PropertyID::TransitionDelay, StyleValueList::create(move(transition_values[2]), StyleValueList::Separator::Comma)); - set_longhand_property(CSS::PropertyID::TransitionTimingFunction, StyleValueList::create(move(transition_values[3]), StyleValueList::Separator::Comma)); - set_longhand_property(CSS::PropertyID::TransitionBehavior, StyleValueList::create(move(transition_values[4]), StyleValueList::Separator::Comma)); return; } diff --git a/Tests/LibWeb/Text/expected/css/transition-css-wide-keyword.txt b/Tests/LibWeb/Text/expected/css/transition-css-wide-keyword.txt new file mode 100644 index 00000000000..7f84da7225a --- /dev/null +++ b/Tests/LibWeb/Text/expected/css/transition-css-wide-keyword.txt @@ -0,0 +1 @@ +#a { transition: initial; } diff --git a/Tests/LibWeb/Text/input/css/transition-css-wide-keyword.html b/Tests/LibWeb/Text/input/css/transition-css-wide-keyword.html new file mode 100644 index 00000000000..a7ce51159a7 --- /dev/null +++ b/Tests/LibWeb/Text/input/css/transition-css-wide-keyword.html @@ -0,0 +1,14 @@ + + + + + +