diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp index 1d01df700d64631889f4391491db30a99ecbe9c6..7bf49440265a65fcdd3743f8893c8282b4522691 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp @@ -68,6 +68,7 @@ public: void clear(); void initialize(); + void loadPlugins(QDeclarativeEngine *engine); void parseQmlTypes(); void parseNonQmlTypes(); void parseValueTypes(); @@ -112,6 +113,7 @@ void MetaInfoPrivate::initialize() QDeclarativeEngine engine; Q_UNUSED(engine); + loadPlugins(&engine); parseQmlTypes(); parseNonQmlTypes(); parseValueTypes(); @@ -120,7 +122,25 @@ void MetaInfoPrivate::initialize() m_isInitialized = true; } +void MetaInfoPrivate::loadPlugins(QDeclarativeEngine *engine) +{ + // hack to load plugins + QDeclarativeComponent pluginComponent(engine); + + QStringList pluginList; + pluginList += "import Qt 4.7"; + pluginList += "import org.webkit 1.0"; + + // load maybe useful plugins + pluginList += "import Qt.labs.folderlistmodel 1.0"; + pluginList += "import Qt.labs.gestures 1.0"; + pluginList += "import Qt.multimedia 4.7"; + pluginList += "import Qt.labs.particles 1.0"; + QString componentString = QString("%1\n Item {}\n").arg(pluginList.join("\n")); + + pluginComponent.setData(componentString.toLatin1(), QUrl()); +} void MetaInfoPrivate::parseProperties(NodeMetaInfo &nodeMetaInfo, const QMetaObject *qMetaObject) const { diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index 3330097b20601cfbab25599237a54df7e0f68f65..a702214dd4538ccfe6ebf671b0a0219c30faac26 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -3606,6 +3606,12 @@ void TestCore::testMetaInfo() { QScopedPointer<Model> model(Model::create("Qt/Item")); QVERIFY(model.data()); + + // test whether default type is registered + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); + + // test whether types from plugins are loaded + QVERIFY(model->metaInfo().hasNodeMetaInfo("org.webkit/WebView", 1, 0)); } void TestCore::testMetaInfoSimpleType()