summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2016-10-25 15:19:36 +0200
committerThomas Hartmann <Thomas.Hartmann@theqtcompany.com>2016-10-25 14:05:41 +0000
commitcb86cc3bdd3ee9211a522ac98c7043f0f4844c33 (patch)
tree82fb6b506f98655cff546ad7b8761ca261f6d12f
parent148e5a27929aaa27738bfd125af3d6abf461aa4a (diff)
downloadqt-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.cpp24
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(),