diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 1aa5fdb3f4f..4069d3677b0 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -45,6 +46,7 @@ #include #include #include +#include #include namespace QmlDesigner { @@ -869,11 +871,24 @@ QString NodeMetaInfoPrivate::componentFileName() const QString NodeMetaInfoPrivate::importDirectoryPath() const { + ModelManagerInterface *modelManager = ModelManagerInterface::instance(); + if (isValid()) { const Imports *imports = context()->imports(document()); - ImportInfo importInfo = imports->info(qualfiedTypeName(), context().data()); + ImportInfo importInfo = imports->info(lookupNameComponent().last(), context().data()); - return importInfo.path(); + if (importInfo.type() == ImportInfo::DirectoryImport) { + return importInfo.path(); + } else if (importInfo.type() == ImportInfo::LibraryImport) { + if (modelManager) { + foreach (const QString &importPath, modelManager->importPaths()) { + const QString targetPath = QDir(importPath).filePath(importInfo.path()); + if (QDir(targetPath).exists()) { + return targetPath; + } + } + } + } } return QString(); }