diff options
author | Charles Yin <charles.yin@nokia.com> | 2012-05-08 10:42:28 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-09 00:56:16 +0200 |
commit | 68b899266ca209d43026376a6cf9d7bbdc3483b8 (patch) | |
tree | 0a0d2068c5dcafc2d86883405025db33e00b2373 /src/qml/qml/qqmlvme.cpp | |
parent | 08bafae3a1c148353e3f37f9966b9ecc28ba3a5f (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.cpp | 11 |
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; |