QmlDesigner: Quailfy library and directory imports

This unifies the behavior with the TextToModelMerger for consistency.
When parsing QML documents the types are already qualified in the same way.
The plan is to use NodeMetaInfo also in the TextToModelMerger in the future.

Change-Id: I046f39d87f1be0506740e3a4afdfbff9b13eca4b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Thomas Hartmann
2022-03-10 20:06:28 +01:00
parent b303afa4ec
commit 8867fd2a9b

View File

@@ -767,12 +767,16 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i
const ObjectValue *objectValue = getObjectValue(); const ObjectValue *objectValue = getObjectValue();
if (objectValue) { if (objectValue) {
const CppComponentValue *qmlValue = value_cast<CppComponentValue>(objectValue); const CppComponentValue *qmlValue = value_cast<CppComponentValue>(objectValue);
if (qmlValue) { if (qmlValue) {
if (m_majorVersion == -1 && m_minorVersion == -1) { if (m_majorVersion == -1 && m_minorVersion == -1) {
m_majorVersion = qmlValue->componentVersion().majorVersion(); m_majorVersion = qmlValue->componentVersion().majorVersion();
m_minorVersion = qmlValue->componentVersion().minorVersion(); m_minorVersion = qmlValue->componentVersion().minorVersion();
m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.' + qmlValue->className().toUtf8(); m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.'
} else if (m_majorVersion == qmlValue->componentVersion().majorVersion() && m_minorVersion == qmlValue->componentVersion().minorVersion()) { + qmlValue->className().toUtf8();
} else if (m_majorVersion == qmlValue->componentVersion().majorVersion()
&& m_minorVersion == qmlValue->componentVersion().minorVersion()) {
m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.' + qmlValue->className().toUtf8(); m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.' + qmlValue->className().toUtf8();
} else { } else {
return; return;
@@ -780,10 +784,16 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i
} else { } else {
m_isFileComponent = true; m_isFileComponent = true;
const Imports *imports = context()->imports(document()); const Imports *imports = context()->imports(document());
ImportInfo importInfo = imports->info(lookupNameComponent().constLast(), context().data()); const ImportInfo importInfo = imports->info(lookupNameComponent().constLast(), context().data());
if (importInfo.isValid() && importInfo.type() == ImportType::Library) { if (importInfo.isValid()) {
m_majorVersion = importInfo.version().majorVersion(); if (importInfo.type() == ImportType::Library) {
m_minorVersion = importInfo.version().minorVersion(); m_majorVersion = importInfo.version().majorVersion();
m_minorVersion = importInfo.version().minorVersion();
}
bool prepandName = (importInfo.type() == ImportType::Library || importInfo.type() == ImportType::Directory)
&& !m_qualfiedTypeName.contains('.');
if (prepandName)
m_qualfiedTypeName.prepend(importInfo.name().toUtf8() + '.');
} }
} }
m_objectValue = objectValue; m_objectValue = objectValue;