diff options
author | Warwick Allison <warwick.allison@nokia.com> | 2010-04-29 00:32:25 (GMT) |
---|---|---|
committer | Warwick Allison <warwick.allison@nokia.com> | 2010-04-29 00:32:25 (GMT) |
commit | a7ace40338145184ca490d1544c1171b56852617 (patch) | |
tree | 5ac30db7f42f5b706d1de2f645783a8e8c7805a7 /src/declarative/util | |
parent | 44708167042e95ab4b5cfef8a19a9ab4f9484a71 (diff) | |
parent | efab34ea95560db007b1a75cce63cf8f6431a683 (diff) | |
download | Qt-a7ace40338145184ca490d1544c1171b56852617.zip Qt-a7ace40338145184ca490d1544c1171b56852617.tar.gz Qt-a7ace40338145184ca490d1544c1171b56852617.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7
Diffstat (limited to 'src/declarative/util')
-rw-r--r-- | src/declarative/util/qdeclarativebehavior.cpp | 15 | ||||
-rw-r--r-- | src/declarative/util/qdeclarativebehavior_p.h | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 1089d31..90344ab 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -48,6 +48,7 @@ #include <qdeclarativeinfo.h> #include <qdeclarativeproperty_p.h> #include <qdeclarativeguard_p.h> +#include <qdeclarativeengine_p.h> #include <private/qobject_p.h> @@ -57,12 +58,13 @@ class QDeclarativeBehaviorPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QDeclarativeBehavior) public: - QDeclarativeBehaviorPrivate() : animation(0), enabled(true) {} + QDeclarativeBehaviorPrivate() : animation(0), enabled(true), finalized(false) {} QDeclarativeProperty property; QVariant currentValue; QDeclarativeGuard<QDeclarativeAbstractAnimation> animation; bool enabled; + bool finalized; }; /*! @@ -158,7 +160,7 @@ void QDeclarativeBehavior::write(const QVariant &value) { Q_D(QDeclarativeBehavior); qmlExecuteDeferred(this); - if (!d->animation || !d->enabled) { + if (!d->animation || !d->enabled || !d->finalized) { QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); return; } @@ -189,6 +191,15 @@ void QDeclarativeBehavior::setTarget(const QDeclarativeProperty &property) d->currentValue = property.read(); if (d->animation) d->animation->setDefaultTarget(property); + + QDeclarativeEnginePrivate *engPriv = QDeclarativeEnginePrivate::get(qmlEngine(this)); + engPriv->registerFinalizedParserStatusObject(this, this->metaObject()->indexOfSlot("componentFinalized()")); +} + +void QDeclarativeBehavior::componentFinalized() +{ + Q_D(QDeclarativeBehavior); + d->finalized = true; } QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index e8a809f..6c10eec 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -82,6 +82,9 @@ public: Q_SIGNALS: void enabledChanged(); + +private Q_SLOTS: + void componentFinalized(); }; QT_END_NAMESPACE |