Browse Source

LibWeb: Run update_finished_state when setting AnimationEffect's timing

This will need to a necessary style invalidation
Matthew Olsson 1 year ago
parent
commit
3721a1a81c

+ 5 - 0
Userland/Libraries/LibWeb/Animations/Animation.cpp

@@ -509,6 +509,11 @@ void Animation::notify_timeline_time_did_change()
     }
 }
 
+void Animation::effect_timing_changed(Badge<AnimationEffect>)
+{
+    update_finished_state(DidSeek::No, SynchronouslyNotify::Yes);
+}
+
 // https://www.w3.org/TR/web-animations-1/#associated-effect-end
 double Animation::associated_effect_end() const
 {

+ 2 - 0
Userland/Libraries/LibWeb/Animations/Animation.h

@@ -65,6 +65,8 @@ public:
     JS::GCPtr<DOM::Document> document_for_timing() const;
     void notify_timeline_time_did_change();
 
+    void effect_timing_changed(Badge<AnimationEffect>);
+
 protected:
     Animation(JS::Realm&);
 

+ 3 - 0
Userland/Libraries/LibWeb/Animations/AnimationEffect.cpp

@@ -151,6 +151,9 @@ WebIDL::ExceptionOr<void> AnimationEffect::update_timing(OptionalEffectTiming ti
     if (timing.easing.has_value())
         m_easing_function = timing.easing.value();
 
+    if (auto animation = m_associated_animation)
+        animation->effect_timing_changed({});
+
     return {};
 }