diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index c0968a15f1a..a0e75e314a7 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -819,7 +819,23 @@ static void removeUsedImports(QHash &filteredPossibleImportK filteredPossibleImportKeys.remove(import.info.path()); } -static QList generatePossibleImports(const QHash &filteredPossibleImportKeys) +static QList generatePossibleFileImports(const QString &path) +{ + QList possibleImports; + + foreach (const QString &subDir, QDir(path).entryList(QDir::Dirs | QDir::NoDot | QDir::NoDotDot)) { + QDir dir(path + "/" + subDir); + if (!dir.entryInfoList(QStringList("*.qml"), QDir::Files).isEmpty() + && dir.entryInfoList(QStringList("qmldir"), QDir::Files).isEmpty()) { + QmlDesigner::Import import = QmlDesigner::Import::createFileImport(subDir); + possibleImports.append(import); + } + } + + return possibleImports; +} + +static QList generatePossibleLibraryImports(const QHash &filteredPossibleImportKeys) { QList possibleImports; @@ -842,9 +858,11 @@ void TextToModelMerger::setupPossibleImports(const QmlJS::Snapshot &snapshot, co removeUsedImports(filteredPossibleImportKeys, m_scopeChain->context()->imports(m_document.data())->all()); - QList possibleImports = generatePossibleImports(filteredPossibleImportKeys); + QList possibleImports = generatePossibleLibraryImports(filteredPossibleImportKeys); - if ( m_rewriterView->isAttached()) + possibleImports.append(generatePossibleFileImports(document()->path())); + + if (m_rewriterView->isAttached()) m_rewriterView->model()->setPossibleImports(possibleImports); }