diff --git a/components/style/animation.rs b/components/style/animation.rs index 1a054f67945..aa831fe7ee1 100644 --- a/components/style/animation.rs +++ b/components/style/animation.rs @@ -357,8 +357,8 @@ impl PropertyAnimation { let property_animation = PropertyAnimation { property: animated_property, - timing_function: timing_function, - duration: duration, + timing_function, + duration, }; if property_animation.does_animate() { diff --git a/components/style/matching.rs b/components/style/matching.rs index 922ecad9eb4..bc8cf13659c 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -331,7 +331,7 @@ trait PrivateMatchMethods: TElement { fn process_animations( &self, context: &mut StyleContext, - old_values: &mut Option>, + old_values: Option<&Arc>, new_values: &mut Arc, restyle_hint: RestyleHint, important_rules_changed: bool, @@ -413,7 +413,7 @@ trait PrivateMatchMethods: TElement { fn process_animations( &self, context: &mut StyleContext, - old_values: &mut Option>, + old_values: Option<&Arc>, new_values: &mut Arc, _restyle_hint: RestyleHint, _important_rules_changed: bool, @@ -423,11 +423,10 @@ trait PrivateMatchMethods: TElement { let mut possibly_expired_animations = vec![]; let shared_context = context.shared; - if let Some(ref mut old) = *old_values { - // FIXME(emilio, #20116): This makes no sense. + if old_values.is_some() { self.update_animations_for_cascade( shared_context, - old, + new_values, &mut possibly_expired_animations, &context.thread_local.font_metrics_provider, ); @@ -446,7 +445,10 @@ trait PrivateMatchMethods: TElement { // Trigger transitions if necessary. This will reset `new_values` back // to its old value if it did trigger a transition. - if let Some(ref values) = *old_values { + // + // FIXME(emilio): We need logic to also stop the old transitions + // from running if transition-property / transition-duration changed. + if let Some(ref values) = old_values { animation::start_transitions_if_applicable( new_animations_sender, this_opaque, @@ -573,10 +575,6 @@ trait PrivateMatchMethods: TElement { // FIXME(emilio, #20116): It's not clear to me that the name of this method // represents anything of what it does. - // - // Also, this function gets the old style, for some reason I don't really - // get, but the functions called (mainly update_style_for_animation) expects - // the new style, wtf? #[cfg(feature = "servo")] fn update_animations_for_cascade( &self, @@ -680,7 +678,7 @@ pub trait MatchMethods: TElement { self.process_animations( context, - &mut data.styles.primary, + data.styles.primary.as_ref(), &mut new_styles.primary.style.0, data.hint, important_rules_changed,