From 03bc2d587ea7caa63935c58703ec58c4acb45c22 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Wed, 28 Apr 2010 17:38:27 +0000 Subject: [PATCH] allow clearing the animations, checking for whether an animation is registered and make it first-come, first-serve to avoid anims overriding each other svn path=/trunk/KDE/kdelibs/; revision=1120236 --- animations/animationscriptengine.cpp | 21 ++++++++++++++++++--- animations/animationscriptengine_p.h | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/animations/animationscriptengine.cpp b/animations/animationscriptengine.cpp index fe6faf5b2..f36ccba6b 100644 --- a/animations/animationscriptengine.cpp +++ b/animations/animationscriptengine.cpp @@ -38,13 +38,28 @@ QScriptValue animation(const QString &anim) return s_animFuncs.value(anim); } +bool isAnimationRegistered(const QString &anim) +{ + return s_animFuncs.contains(anim); +} + +void clearAnimations() +{ + s_animFuncs.clear(); + delete inst; + inst = 0; +} + QScriptValue registerAnimation(QScriptContext *context, QScriptEngine *engine) { if (context->argumentCount() > 1) { const QString name = context->argument(0).toString(); - const QScriptValue func = context->argument(1); - if (func.isFunction()) { - s_animFuncs.insert(name, func); + + if (!s_animFuncs.contains(name)) { + const QScriptValue func = context->argument(1); + if (func.isFunction()) { + s_animFuncs.insert(name, func); + } } } diff --git a/animations/animationscriptengine_p.h b/animations/animationscriptengine_p.h index b9d1844e1..e17c1bb89 100644 --- a/animations/animationscriptengine_p.h +++ b/animations/animationscriptengine_p.h @@ -33,6 +33,8 @@ namespace Plasma namespace AnimationScriptEngine { +void clearAnimations(); +bool isAnimationRegistered(const QString &anim); QScriptEngine* globalEngine(); QScriptValue animation(const QString &anim);