diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index b463309542129f62161729c3f1c0d31084794aa5..c5a2ca3452218ade52ac23c881d7a3a240a18a05 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -291,7 +291,8 @@ ObjectValue *Link::importNonFile(Document::Ptr doc, const ImportInfo &importInfo if (libraryInfo.dumpStatus() == LibraryInfo::DumpNotStartedOrRunning) { ModelManagerInterface *modelManager = ModelManagerInterface::instance(); if (modelManager) - modelManager->loadPluginTypes(libraryPath, importPath, packageName); + modelManager->loadPluginTypes(libraryPath, importPath, + packageName, version.toString()); warning(doc, locationFromRange(importInfo.ast()->firstSourceLocation(), importInfo.ast()->lastSourceLocation()), tr("Library contains C++ plugins, type dump is in progress.")); diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h index 15840d69ee771521c170d6519b6cc07e526e3149..1fa30b4196a8d02caf100c41f476d261152ce73b 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.h +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h @@ -131,7 +131,8 @@ public: virtual QStringList importPaths() const = 0; - virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri) = 0; + virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, + const QString &importUri, const QString &importVersion) = 0; virtual CppQmlTypeHash cppQmlTypes() const = 0; diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index 41a462c0c5c1467ba730f5668ddc47591aad1859..754f606b0249f2e66a174c6d9b9ed93f0ca1d181 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -571,9 +571,10 @@ void ModelManager::updateImportPaths() updateSourceFiles(importedFiles, true); } -void ModelManager::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri) +void ModelManager::loadPluginTypes(const QString &libraryPath, const QString &importPath, + const QString &importUri, const QString &importVersion) { - m_pluginDumper->loadPluginTypes(libraryPath, importPath, importUri); + m_pluginDumper->loadPluginTypes(libraryPath, importPath, importUri, importVersion); } void ModelManager::queueCppQmlTypeUpdate(const CPlusPlus::Document::Ptr &doc) diff --git a/src/plugins/qmljstools/qmljsmodelmanager.h b/src/plugins/qmljstools/qmljsmodelmanager.h index b669767693f53ef4614797e21b094bf6bf0f53b6..9adbb1ad03a9d922b79b2042eec1fa226c129ecd 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.h +++ b/src/plugins/qmljstools/qmljsmodelmanager.h @@ -83,7 +83,8 @@ public: virtual QStringList importPaths() const; - virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri); + virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, + const QString &importUri, const QString &importVersion); virtual CppQmlTypeHash cppQmlTypes() const; diff --git a/src/plugins/qmljstools/qmljsplugindumper.cpp b/src/plugins/qmljstools/qmljsplugindumper.cpp index 28db6304f32ba5e0b36f18f39b62bc2b26e40825..7ab0d9bcb23c9fd72f3a93d6e89f0224172f328d 100644 --- a/src/plugins/qmljstools/qmljsplugindumper.cpp +++ b/src/plugins/qmljstools/qmljsplugindumper.cpp @@ -55,16 +55,17 @@ PluginDumper::PluginDumper(ModelManager *modelManager) connect(m_pluginWatcher, SIGNAL(fileChanged(QString)), SLOT(pluginChanged(QString))); } -void PluginDumper::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri) +void PluginDumper::loadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri, const QString &importVersion) { // move to the owning thread metaObject()->invokeMethod(this, "onLoadPluginTypes", Q_ARG(QString, libraryPath), Q_ARG(QString, importPath), - Q_ARG(QString, importUri)); + Q_ARG(QString, importUri), + Q_ARG(QString, importVersion)); } -void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri) +void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString &importPath, const QString &importUri, const QString &importVersion) { const QString canonicalLibraryPath = QDir::cleanPath(libraryPath); if (m_runningQmldumps.values().contains(canonicalLibraryPath)) @@ -87,6 +88,7 @@ void PluginDumper::onLoadPluginTypes(const QString &libraryPath, const QString & plugin.qmldirPath = canonicalLibraryPath; plugin.importPath = importPath; plugin.importUri = importUri; + plugin.importVersion = importVersion; // watch plugin libraries foreach (const QmlDirParser::Plugin &plugin, snapshot.libraryInfo(canonicalLibraryPath).plugins()) { @@ -277,8 +279,10 @@ void PluginDumper::dump(const Plugin &plugin) connect(process, SIGNAL(finished(int)), SLOT(qmlPluginTypeDumpDone(int))); connect(process, SIGNAL(error(QProcess::ProcessError)), SLOT(qmlPluginTypeDumpError(QProcess::ProcessError))); QStringList args; - args << plugin.importPath; + args << QLatin1String("--notrelocatable"); // ### temporary until relocatable libraries work args << plugin.importUri; + args << plugin.importVersion; + args << plugin.importPath; process->start(info.qmlDumpPath, args); m_runningQmldumps.insert(process, plugin.qmldirPath); } diff --git a/src/plugins/qmljstools/qmljsplugindumper.h b/src/plugins/qmljstools/qmljsplugindumper.h index 99e4a147fc8ef378c58548c81c905d6aedd52654..5ae24f9794aa14b63563017bdaa5ff77b4cce233 100644 --- a/src/plugins/qmljstools/qmljsplugindumper.h +++ b/src/plugins/qmljstools/qmljsplugindumper.h @@ -59,12 +59,12 @@ public: public: void loadPluginTypes(const QString &libraryPath, const QString &importPath, - const QString &importUri); + const QString &importUri, const QString &importVersion); void scheduleCompleteRedump(); private slots: void onLoadPluginTypes(const QString &libraryPath, const QString &importPath, - const QString &importUri); + const QString &importUri, const QString &importVersion); void dumpAllPlugins(); void qmlPluginTypeDumpDone(int exitCode); void qmlPluginTypeDumpError(QProcess::ProcessError error); @@ -76,6 +76,7 @@ private: QString qmldirPath; QString importPath; QString importUri; + QString importVersion; bool hasPredumpedQmlTypesFile() const; QString predumpedQmlTypesFilePath() const;