diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index 8839a58cda8..1bde83e7b02 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -12,6 +12,7 @@ use cssparser::Parser; #[cfg(feature = "gecko")] use gecko_bindings::structs::nsCSSPropertyID; #[cfg(feature = "gecko")] use gecko_bindings::sugar::ownership::{HasFFI, HasSimpleFFI}; use itertools::{EitherOrBoth, Itertools}; +use num_traits::Zero; use properties::{CSSWideKeyword, PropertyDeclaration}; use properties::longhands; use properties::longhands::font_weight::computed_value::T as FontWeight; @@ -1041,13 +1042,22 @@ impl Animate for ComputedTransformOperation { this.animate(other, procedure)?, )) }, + ( + &TransformOperation::Skew(ref fx, None), + &TransformOperation::Skew(ref tx, None), + ) => { + Ok(TransformOperation::Skew( + fx.animate(tx, procedure)?, + None, + )) + }, ( &TransformOperation::Skew(ref fx, ref fy), &TransformOperation::Skew(ref tx, ref ty), ) => { Ok(TransformOperation::Skew( fx.animate(tx, procedure)?, - fy.animate(ty, procedure)?, + Some(fy.unwrap_or(Angle::zero()).animate(&ty.unwrap_or(Angle::zero()), procedure)?) )) }, ( @@ -1076,13 +1086,22 @@ impl Animate for ComputedTransformOperation { fz.animate(tz, procedure)?, )) }, + ( + &TransformOperation::Translate(ref fx, None), + &TransformOperation::Translate(ref tx, None), + ) => { + Ok(TransformOperation::Translate( + fx.animate(tx, procedure)?, + None + )) + }, ( &TransformOperation::Translate(ref fx, ref fy), &TransformOperation::Translate(ref tx, ref ty), ) => { Ok(TransformOperation::Translate( fx.animate(tx, procedure)?, - fy.animate(ty, procedure)? + Some(fy.unwrap_or(*fx).animate(&ty.unwrap_or(*tx), procedure)?) )) }, ( @@ -1143,6 +1162,24 @@ impl Animate for ComputedTransformOperation { animate_multiplicative_factor(*f, *t, procedure)? )) }, + ( + &TransformOperation::Scale(ref f, None), + &TransformOperation::Scale(ref t, None), + ) => { + Ok(TransformOperation::Scale( + animate_multiplicative_factor(*f, *t, procedure)?, + None + )) + }, + ( + &TransformOperation::Scale(ref fx, ref fy), + &TransformOperation::Scale(ref tx, ref ty), + ) => { + Ok(TransformOperation::Scale( + animate_multiplicative_factor(*fx, *tx, procedure)?, + Some(animate_multiplicative_factor(fy.unwrap_or(*fx), ty.unwrap_or(*tx), procedure)?), + )) + }, ( &TransformOperation::Rotate3D(fx, fy, fz, fa), &TransformOperation::Rotate3D(tx, ty, tz, ta),