aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvme.cpp
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2012-05-08 10:42:28 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-09 00:56:16 +0200
commit68b899266ca209d43026376a6cf9d7bbdc3483b8 (patch)
tree0a0d2068c5dcafc2d86883405025db33e00b2373 /src/qml/qml/qqmlvme.cpp
parent08bafae3a1c148353e3f37f9966b9ecc28ba3a5f (diff)
Better checking top level root object creation status
Add QQmlContextData::isRootObjectInCreation flag, only set it to true in Init qml instruction, once a root ojbect created, set it to false and set QQmlData::rootObjectInCreation to true. Change-Id: Iba7b348ab664a472280d8d7283e93787b3dd0a56 Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlvme.cpp')
-rw-r--r--src/qml/qml/qqmlvme.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp
index 357200d5a5..898f598af4 100644
--- a/src/qml/qml/qqmlvme.cpp
+++ b/src/qml/qml/qqmlvme.cpp
@@ -449,6 +449,7 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
if (states.count() == 1) {
rootContext = CTXT;
rootContext->activeVMEData = data;
+ rootContext->isRootObjectInCreation = true;
}
if (states.count() == 1 && !creationContext.isNull()) {
// A component that is logically created within another component instance shares the
@@ -509,13 +510,11 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
QML_BEGIN_INSTR(CompleteQMLObject)
QObject *o = objects.top();
+ Q_ASSERT(o);
QQmlData *ddata = QQmlData::get(o);
Q_ASSERT(ddata);
- if (states.count() == 1)
- ddata->inCreation = true;
-
if (instr.isRoot) {
if (ddata->context) {
Q_ASSERT(ddata->context != CTXT);
@@ -550,8 +549,10 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
ddata->ownMemory = false;
QObjectPrivate::get(o)->declarativeData = ddata;
- if (states.count() == 1)
- ddata->inCreation = true;
+ if (rootContext && rootContext->isRootObjectInCreation) {
+ ddata->rootObjectInCreation = true;
+ rootContext->isRootObjectInCreation = false;
+ }
if (type.typePropertyCache && !ddata->propertyCache) {
ddata->propertyCache = type.typePropertyCache;