Fixed animation

This commit is contained in:
Alexei Anoshenko 2024-07-17 16:30:43 +03:00
parent 9b27cb4a55
commit 95043b0b9a
2 changed files with 21 additions and 9 deletions

View File

@ -56,17 +56,22 @@ func (animation *animationData) finish() {
} }
} }
if animation.oldAnimation != nil {
animation.view.Set(AnimationTag, animation.oldAnimation) animation.view.Set(AnimationTag, animation.oldAnimation)
animation.oldAnimation = nil
} else {
animation.view.Set(AnimationTag, "")
}
animation.oldListeners = map[string][]func(View, string){} animation.oldListeners = map[string][]func(View, string){}
animation.oldAnimation = nil
animation.view = nil animation.view = nil
animation.listener = nil animation.listener = nil
} }
} }
func (animation *animationData) Stop() { func (animation *animationData) Stop() {
animation.finish() animation.onAnimationCancel(animation.view, "")
} }
func (animation *animationData) Pause() { func (animation *animationData) Pause() {
@ -89,10 +94,12 @@ func (animation *animationData) onAnimationStart(view View, _ string) {
func (animation *animationData) onAnimationEnd(view View, _ string) { func (animation *animationData) onAnimationEnd(view View, _ string) {
if animation.view != nil { if animation.view != nil {
if animation.listener != nil { animationView := animation.view
animation.listener(animation.view, animation, AnimationEndEvent) listener := animation.listener
}
animation.finish() animation.finish()
if listener != nil {
listener(animationView, animation, AnimationEndEvent)
}
} }
} }
@ -103,7 +110,12 @@ func (animation *animationData) onAnimationIteration(view View, _ string) {
} }
func (animation *animationData) onAnimationCancel(view View, _ string) { func (animation *animationData) onAnimationCancel(view View, _ string) {
if animation.view != nil && animation.listener != nil { if animation.view != nil {
animation.listener(animation.view, animation, AnimationCancelEvent) animationView := animation.view
listener := animation.listener
animation.finish()
if listener != nil {
listener(animationView, animation, AnimationCancelEvent)
}
} }
} }

View File

@ -521,7 +521,7 @@ func (session *sessionData) removeAnimation(keyframe string) {
} }
if end > index { if end > index {
session.animationCSS = css[:index] + css[end:] session.animationCSS = strings.Trim(css[:index]+css[end:], "\n")
if session.bridge != nil { if session.bridge != nil {
session.bridge.setAnimationCSS(session.animationCSS) session.bridge.setAnimationCSS(session.animationCSS)
} else { } else {