summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/qml/qmlcompiler.cpp4
-rw-r--r--src/declarative/util/qmlstate.cpp2
-rw-r--r--src/declarative/util/qmlstate_p.h1
-rw-r--r--src/declarative/util/qmltransition.cpp2
-rw-r--r--src/declarative/util/qmltransition_p.h1
5 files changed, 10 insertions, 0 deletions
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index 3f0dd84..6ecb647 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -83,6 +83,7 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(compilerDump, QML_COMPILER_DUMP);
DEFINE_BOOL_CONFIG_OPTION(compilerStatDump, QML_COMPILER_STATISTICS_DUMP);
DEFINE_BOOL_CONFIG_OPTION(qmlExperimental, QML_EXPERIMENTAL);
+DEFINE_BOOL_CONFIG_OPTION(qmlEnableDeferred, QML_ENABLE_DEFERRED);
using namespace QmlParser;
@@ -2767,6 +2768,9 @@ QmlType *QmlCompiler::toQmlType(QmlParser::Object *from)
QStringList QmlCompiler::deferredProperties(QmlParser::Object *obj)
{
+ if (!qmlEnableDeferred())
+ return QStringList();
+
const QMetaObject *mo = obj->metatype;
int idx = mo->indexOfClassInfo("DeferredPropertyNames");
diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp
index c2201a6..e41cbaf 100644
--- a/src/declarative/util/qmlstate.cpp
+++ b/src/declarative/util/qmlstate.cpp
@@ -329,6 +329,8 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever
{
Q_D(QmlState);
+ qmlExecuteDeferred(this);
+
cancel();
if (revert)
revert->cancel();
diff --git a/src/declarative/util/qmlstate_p.h b/src/declarative/util/qmlstate_p.h
index 33e66d8..95a6fc5 100644
--- a/src/declarative/util/qmlstate_p.h
+++ b/src/declarative/util/qmlstate_p.h
@@ -133,6 +133,7 @@ class Q_DECLARATIVE_EXPORT QmlState : public QObject
Q_PROPERTY(QString extend READ extends WRITE setExtends)
Q_PROPERTY(QmlList<QmlStateOperation *>* changes READ changes)
Q_CLASSINFO("DefaultProperty", "changes")
+ Q_CLASSINFO("DeferredPropertyNames", "changes");
public:
QmlState(QObject *parent=0);
diff --git a/src/declarative/util/qmltransition.cpp b/src/declarative/util/qmltransition.cpp
index b96ff61..215fc91 100644
--- a/src/declarative/util/qmltransition.cpp
+++ b/src/declarative/util/qmltransition.cpp
@@ -165,6 +165,8 @@ void QmlTransition::prepare(QmlStateOperation::ActionList &actions,
{
Q_D(QmlTransition);
+ qmlExecuteDeferred(this);
+
if (d->reversed) {
for (int ii = d->animations.count() - 1; ii >= 0; --ii) {
d->animations.at(ii)->transition(actions, after, QmlAbstractAnimation::Backward);
diff --git a/src/declarative/util/qmltransition_p.h b/src/declarative/util/qmltransition_p.h
index 3dd0244..0a9b036 100644
--- a/src/declarative/util/qmltransition_p.h
+++ b/src/declarative/util/qmltransition_p.h
@@ -67,6 +67,7 @@ class Q_DECLARATIVE_EXPORT QmlTransition : public QObject
Q_PROPERTY(bool reversible READ reversible WRITE setReversible)
Q_PROPERTY(QmlList<QmlAbstractAnimation *>* animations READ animations)
Q_CLASSINFO("DefaultProperty", "animations")
+ Q_CLASSINFO("DeferredPropertyNames", "animations");
public:
QmlTransition(QObject *parent=0);