diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2016-10-25 15:19:36 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-10-25 14:05:41 +0000 |
commit | cb86cc3bdd3ee9211a522ac98c7043f0f4844c33 (patch) | |
tree | 82fb6b506f98655cff546ad7b8761ca261f6d12f | |
parent | 148e5a27929aaa27738bfd125af3d6abf461aa4a (diff) | |
download | qt-creator-cb86cc3bdd3ee9211a522ac98c7043f0f4844c33.tar.gz |
QmlDesigner: Only register mockup object if not available
If a cpp type is somehow available do not create the mockup.
Change-Id: Ibd76429c3d1190c46a223062d77d676f728fe666
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index ab31bda00d..149db2a501 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -685,16 +685,36 @@ void NodeInstanceServer::setupDummysForContext(QQmlContext *context) } } +static bool isTypeAvailable(const MockupTypeContainer &mockupType, QQmlEngine *engine) +{ + QString qmlSource; + qmlSource.append("import " + + mockupType.importUri() + + " " + + QString::number(mockupType.majorVersion()) + + "." + QString::number(mockupType.minorVersion()) + + "\n"); + + qmlSource.append(QString::fromUtf8(mockupType.typeName()) + "{\n}\n"); + + QQmlComponent component(engine); + component.setData(qmlSource.toUtf8(), QUrl()); + + return !component.isError(); +} + void NodeInstanceServer::setupMockupTypes(const QVector<MockupTypeContainer> &container) { for (const MockupTypeContainer &mockupType : container) { + if (!isTypeAvailable(mockupType, engine())) #if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)) - QQuickDesignerSupportMetaInfo::registerMockupObject(mockupType.importUri().toUtf8(), + + QQuickDesignerSupportMetaInfo::registerMockupObject(mockupType.importUri().toUtf8(), mockupType.majorVersion(), mockupType.minorVersion(), mockupType.typeName()); #else - qmlRegisterType(QUrl("qrc:/qtquickplugin/mockfiles/GenericBackend.qml"), + qmlRegisterType(QUrl("qrc:/qtquickplugin/mockfiles/GenericBackend.qml"), mockupType.importUri().toUtf8(), mockupType.majorVersion(), mockupType.minorVersion(), |