forked from qt-creator/qt-creator
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:
@@ -767,12 +767,16 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i
|
||||
const ObjectValue *objectValue = getObjectValue();
|
||||
if (objectValue) {
|
||||
const CppComponentValue *qmlValue = value_cast<CppComponentValue>(objectValue);
|
||||
|
||||
if (qmlValue) {
|
||||
if (m_majorVersion == -1 && m_minorVersion == -1) {
|
||||
m_majorVersion = qmlValue->componentVersion().majorVersion();
|
||||
m_minorVersion = qmlValue->componentVersion().minorVersion();
|
||||
m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.' + qmlValue->className().toUtf8();
|
||||
} else if (m_majorVersion == qmlValue->componentVersion().majorVersion() && m_minorVersion == qmlValue->componentVersion().minorVersion()) {
|
||||
m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.'
|
||||
+ qmlValue->className().toUtf8();
|
||||
|
||||
} else if (m_majorVersion == qmlValue->componentVersion().majorVersion()
|
||||
&& m_minorVersion == qmlValue->componentVersion().minorVersion()) {
|
||||
m_qualfiedTypeName = qmlValue->moduleName().toUtf8() + '.' + qmlValue->className().toUtf8();
|
||||
} else {
|
||||
return;
|
||||
@@ -780,10 +784,16 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i
|
||||
} else {
|
||||
m_isFileComponent = true;
|
||||
const Imports *imports = context()->imports(document());
|
||||
ImportInfo importInfo = imports->info(lookupNameComponent().constLast(), context().data());
|
||||
if (importInfo.isValid() && importInfo.type() == ImportType::Library) {
|
||||
m_majorVersion = importInfo.version().majorVersion();
|
||||
m_minorVersion = importInfo.version().minorVersion();
|
||||
const ImportInfo importInfo = imports->info(lookupNameComponent().constLast(), context().data());
|
||||
if (importInfo.isValid()) {
|
||||
if (importInfo.type() == ImportType::Library) {
|
||||
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;
|
||||
|
Reference in New Issue
Block a user