diff options
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 11 | ||||
-rw-r--r-- | src/qml/qml/qqmlengine_p.h | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlvme.cpp | 32 |
3 files changed, 31 insertions, 16 deletions
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index f0bf6e4e20..1376ad7106 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -165,6 +165,7 @@ void qmlRegisterBaseTypes(const char *uri, int versionMajor, int versionMinor) */ bool QQmlEnginePrivate::qml_debugging_enabled = false; +bool QQmlEnginePrivate::s_designerMode = false; // these types are part of the QML language void QQmlEnginePrivate::registerBaseTypes(const char *uri, int versionMajor, int versionMinor) @@ -192,6 +193,16 @@ void QQmlEnginePrivate::defineQtQuick2Module() qmlRegisterUncreatableType<QQmlLocale>("QtQuick", 2, 0, "Locale", QQmlEngine::tr("Locale cannot be instantiated. Use Qt.locale()")); } +bool QQmlEnginePrivate::designerMode() +{ + return s_designerMode; +} + +void QQmlEnginePrivate::activateDesignerMode() +{ + s_designerMode = true; +} + /*! \class QQmlImageProviderBase diff --git a/src/qml/qml/qqmlengine_p.h b/src/qml/qml/qqmlengine_p.h index cc07ee5a2e..4f1ab84104 100644 --- a/src/qml/qml/qqmlengine_p.h +++ b/src/qml/qml/qqmlengine_p.h @@ -265,6 +265,9 @@ public: static void registerQtQuick2Types(const char *uri, int versionMajor, int versionMinor); static void defineQtQuick2Module(); + static bool designerMode(); + static void activateDesignerMode(); + static bool qml_debugging_enabled; mutable QMutex mutex; @@ -305,6 +308,7 @@ private: QHash<int, int> m_qmlLists; QHash<int, QQmlCompiledData *> m_compositeTypes; QHash<QUrl, QByteArray> debugChangesHash; + static bool s_designerMode; // These members is protected by the full QQmlEnginePrivate::mutex mutex struct Deletable { Deletable():next(0) {} virtual ~Deletable() {} Deletable *next; }; diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp index 12de9ffebd..3ad442fb36 100644 --- a/src/qml/qml/qqmlvme.cpp +++ b/src/qml/qml/qqmlvme.cpp @@ -1322,28 +1322,28 @@ QQmlContextData *QQmlVME::complete(const Interrupt &interrupt) bindValues.deallocate(); } - { - QQmlTrace trace("VME Component Complete"); - while (!parserStatus.isEmpty()) { - QQmlParserStatus *status = parserStatus.pop(); + if (!QQmlEnginePrivate::designerMode()) { // the qml designer does the component complete later + QQmlTrace trace("VME Component Complete"); + while (!parserStatus.isEmpty()) { + QQmlParserStatus *status = parserStatus.pop(); #ifdef QML_ENABLE_TRACE - QQmlData *data = parserStatusData.pop(); + QQmlData *data = parserStatusData.pop(); #endif - if (status && status->d) { - status->d = 0; + if (status && status->d) { + status->d = 0; #ifdef QML_ENABLE_TRACE - QQmlTrace trace("Component complete"); - trace.addDetail("URL", data->outerContext->url); - trace.addDetail("Line", data->lineNumber); + QQmlTrace trace("Component complete"); + trace.addDetail("URL", data->outerContext->url); + trace.addDetail("Line", data->lineNumber); #endif - status->componentComplete(); + status->componentComplete(); + } + + if (watcher.hasRecursed() || interrupt.shouldInterrupt()) + return 0; } - - if (watcher.hasRecursed() || interrupt.shouldInterrupt()) - return 0; - } - parserStatus.deallocate(); + parserStatus.deallocate(); } { |