diff options
Diffstat (limited to 'src')
10 files changed, 22 insertions, 33 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h b/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h index b31d6506a3..6314568fe4 100644 --- a/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h @@ -58,8 +58,6 @@ public: virtual void deactivateChangeSignals(); virtual void reactivateChangeSignals(); - virtual QStringList importPaths() const; - virtual bool renameId(const QString & /* oldId */, const QString & /* newId */) { return false; } public slots: diff --git a/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h b/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h index 730722ea1e..d5b28558e8 100644 --- a/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h @@ -73,8 +73,6 @@ public: virtual void deactivateChangeSignals(); virtual void reactivateChangeSignals(); - virtual QStringList importPaths() const; - virtual bool renameId(const QString & /* oldId */, const QString & /* newId */) { return false; } protected: diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 9721792907..770b242464 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -203,6 +203,8 @@ public: QString pathForImport(const Import &import); + QStringList importDirectories() const; + signals: void errorsChanged(const QList<RewriterView::Error> &errors); diff --git a/src/plugins/qmldesigner/designercore/include/textmodifier.h b/src/plugins/qmldesigner/designercore/include/textmodifier.h index d95405e047..c9187baf98 100644 --- a/src/plugins/qmldesigner/designercore/include/textmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/textmodifier.h @@ -84,7 +84,6 @@ public: virtual void reactivateChangeSignals() = 0; static QmlJS::Snapshot qmljsSnapshot(); - virtual QStringList importPaths() const = 0; virtual bool renameId(const QString &oldId, const QString &newId) = 0; diff --git a/src/plugins/qmldesigner/designercore/model/componenttextmodifier.cpp b/src/plugins/qmldesigner/designercore/model/componenttextmodifier.cpp index d78a03e6f2..1d0b047598 100644 --- a/src/plugins/qmldesigner/designercore/model/componenttextmodifier.cpp +++ b/src/plugins/qmldesigner/designercore/model/componenttextmodifier.cpp @@ -128,6 +128,3 @@ void ComponentTextModifier::reactivateChangeSignals() void ComponentTextModifier::contentsChange(int /*position*/, int /*charsRemoved*/, int /*charsAdded*/) { } - -QStringList ComponentTextModifier::importPaths() const -{ return m_originalModifier->importPaths(); } diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 2fe40bd15e..94b19ee38a 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -61,6 +61,8 @@ #include "invalididexception.h" #include "textmodifier.h" +#include <qmljs/qmljsmodelmanagerinterface.h> + /*! \defgroup CoreModel */ @@ -1823,6 +1825,9 @@ QString Model::pathForImport(const Import &import) QStringList Model::importPaths() const { + if (rewriterView()) + return rewriterView()->importDirectories(); + QStringList importPathList; QString documentDirectoryPath = QFileInfo(fileUrl().toLocalFile()).absolutePath(); @@ -1830,10 +1835,6 @@ QStringList Model::importPaths() const if (!documentDirectoryPath.isEmpty()) importPathList.append(documentDirectoryPath); - if (textModifier()) { - importPathList.append(textModifier()->importPaths()); - } - return importPathList; } diff --git a/src/plugins/qmldesigner/designercore/model/plaintexteditmodifier.cpp b/src/plugins/qmldesigner/designercore/model/plaintexteditmodifier.cpp index 71c22c9d3d..62354bfe6e 100644 --- a/src/plugins/qmldesigner/designercore/model/plaintexteditmodifier.cpp +++ b/src/plugins/qmldesigner/designercore/model/plaintexteditmodifier.cpp @@ -196,17 +196,3 @@ void PlainTextEditModifier::reactivateChangeSignals() emit textChanged(); } } - -QStringList PlainTextEditModifier::importPaths() const -{ - QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); - if (modelManager && textDocument()) { - QString documentFilePath = textDocument()->baseUrl().toLocalFile(); - if (!documentFilePath.isEmpty()) { - QmlJS::Document::Ptr qmljsDocument = modelManager->snapshot().document(documentFilePath); - return modelManager->defaultVContext(QmlJS::Language::Qml, qmljsDocument, true).paths; - } - } - - return QStringList(); -} diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 9711723f85..7498f0fb25 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -745,6 +745,11 @@ QString RewriterView::pathForImport(const Import &import) return QString(); } +QStringList RewriterView::importDirectories() const +{ + return m_textToModelMerger->vContext().paths; +} + void RewriterView::qmlTextChanged() { if (inErrorState()) diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index b13e359c93..dc646979fc 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -715,7 +715,7 @@ void TextToModelMerger::setupImports(const Document::Ptr &doc, if (!import->fileName.isEmpty()) { const QString strippedFileName = stripQuotes(import->fileName.toString()); const Import newImport = Import::createFileImport(strippedFileName, - version, as, m_rewriterView->textModifier()->importPaths()); + version, as, m_rewriterView->importDirectories()); if (!existingImports.removeOne(newImport)) differenceHandler.modelMissesImport(newImport); @@ -727,7 +727,7 @@ void TextToModelMerger::setupImports(const Document::Ptr &doc, } const Import newImport = - Import::createLibraryImport(importUri, version, as, m_rewriterView->textModifier()->importPaths()); + Import::createLibraryImport(importUri, version, as, m_rewriterView->importDirectories()); if (!existingImports.removeOne(newImport)) differenceHandler.modelMissesImport(newImport); @@ -833,9 +833,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH // qDebug() << "TextToModelMerger::load with data:" << data; const QUrl url = m_rewriterView->model()->fileUrl(); - const QStringList importPaths = m_rewriterView->textModifier()->importPaths(); - setActive(true); + setActive(true); try { Snapshot snapshot = m_rewriterView->textModifier()->qmljsSnapshot(); @@ -853,8 +852,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH return false; } snapshot.insert(doc); - QmlJS::ViewerContext vContext = QmlJS::ModelManagerInterface::instance()->defaultVContext(Language::Qml, doc, true); - ReadingContext ctxt(snapshot, doc, vContext); + m_vContext = QmlJS::ModelManagerInterface::instance()->defaultVContext(Language::Qml, doc, true); + ReadingContext ctxt(snapshot, doc, m_vContext); m_scopeChain = QSharedPointer<const ScopeChain>( new ScopeChain(ctxt.scopeChain())); m_document = doc; @@ -867,7 +866,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH } setupImports(doc, differenceHandler); - setupPossibleImports(snapshot, vContext); + setupPossibleImports(snapshot, m_vContext); if (m_rewriterView->model()->imports().isEmpty()) { const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found")); diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h index 833cdc7cfb..0e98fade2c 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h @@ -72,6 +72,9 @@ public: const QmlJS::Document *document() const { return m_document.data(); } + const QmlJS::ViewerContext &vContext() const + { return m_vContext; } + protected: void setActive(bool active); @@ -145,6 +148,7 @@ private: QTimer m_setupTimer; QSet<ModelNode> m_setupComponentList; QSet<ModelNode> m_setupCustomParserList; + QmlJS::ViewerContext m_vContext; }; class DifferenceHandler |