From cb86cc3bdd3ee9211a522ac98c7043f0f4844c33 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 25 Oct 2016 15:19:36 +0200 Subject: 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 --- .../qml2puppet/instances/nodeinstanceserver.cpp | 24 ++++++++++++++++++++-- 1 file 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 &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(), -- cgit v1.2.1