diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-30 12:03:51 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-30 13:46:48 +0200 |
commit | 2a514e4eb84fcf618d7c6baadbc7219cdd946fe2 (patch) | |
tree | 58e7247b6409ce253e1ac019509e455c72110496 /src/qmltyperegistrar | |
parent | 3f0126ed86f56178fa707db629fabcc01eb31754 (diff) |
qmltyperegistrar: Record header file names in qmltypes files
We will need them to find the types in C++ code.
Change-Id: Id00c6d855adbb767a0be8a9469fbe47447ccec8b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qmltyperegistrar')
-rw-r--r-- | src/qmltyperegistrar/qmltyperegistrar.cpp | 12 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypesclassdescription.cpp | 2 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypesclassdescription.h | 1 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypescreator.cpp | 2 |
4 files changed, 14 insertions, 3 deletions
diff --git a/src/qmltyperegistrar/qmltyperegistrar.cpp b/src/qmltyperegistrar/qmltyperegistrar.cpp index 282fa9251b..9f5553b880 100644 --- a/src/qmltyperegistrar/qmltyperegistrar.cpp +++ b/src/qmltyperegistrar/qmltyperegistrar.cpp @@ -299,14 +299,16 @@ int main(int argc, char **argv) } auto processMetaObject = [&](const QJsonObject &metaObject) { + const QString include = metaObject[QLatin1String("inputFile")].toString(); const QJsonArray classes = metaObject[QLatin1String("classes")].toArray(); for (const auto &cls : classes) { QJsonObject classDef = cls.toObject(); + classDef.insert(QLatin1String("inputFile"), include); + switch (qmlTypeRegistrationMode(classDef)) { case NamespaceRegistration: case GadgetRegistration: case ObjectRegistration: { - const QString include = metaObject[QLatin1String("inputFile")].toString(); if (!include.endsWith(QLatin1String(".h")) && !include.endsWith(QLatin1String(".hpp")) && !include.endsWith(QLatin1String(".hxx")) @@ -433,9 +435,13 @@ int main(int argc, char **argv) continue; } + const QString include = metaObject[QLatin1String("inputFile")].toString(); const QJsonArray classes = metaObject[QLatin1String("classes")].toArray(); - for (const auto &cls : classes) - foreignTypes.append(cls.toObject()); + for (const auto &cls : classes) { + QJsonObject classDef = cls.toObject(); + classDef.insert(QLatin1String("inputFile"), include); + foreignTypes.append(classDef); + } } } } diff --git a/src/qmltyperegistrar/qmltypesclassdescription.cpp b/src/qmltyperegistrar/qmltypesclassdescription.cpp index 3442dc9d64..c63879f4d6 100644 --- a/src/qmltyperegistrar/qmltypesclassdescription.cpp +++ b/src/qmltyperegistrar/qmltypesclassdescription.cpp @@ -62,6 +62,8 @@ void QmlTypesClassDescription::collect(const QJsonObject *classDef, const QVector<QJsonObject> &foreign, CollectMode mode) { + if (file.isEmpty()) + file = classDef->value(QLatin1String("inputFile")).toString(); const auto classInfos = classDef->value(QLatin1String("classInfos")).toArray(); for (const QJsonValue &classInfo : classInfos) { const QJsonObject obj = classInfo.toObject(); diff --git a/src/qmltyperegistrar/qmltypesclassdescription.h b/src/qmltyperegistrar/qmltypesclassdescription.h index d468612beb..32313a490d 100644 --- a/src/qmltyperegistrar/qmltypesclassdescription.h +++ b/src/qmltyperegistrar/qmltypesclassdescription.h @@ -37,6 +37,7 @@ struct QmlTypesClassDescription { const QJsonObject *resolvedClass = nullptr; + QString file; QString elementName; QString defaultProp; QString superClass; diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp index 292841541b..26261795c7 100644 --- a/src/qmltyperegistrar/qmltypescreator.cpp +++ b/src/qmltyperegistrar/qmltypescreator.cpp @@ -45,6 +45,8 @@ static QString enquote(const QString &string) void QmlTypesCreator::writeClassProperties(const QmlTypesClassDescription &collector) { + if (!collector.file.isEmpty()) + m_qml.writeScriptBinding(QLatin1String("file"), enquote(collector.file)); m_qml.writeScriptBinding( QLatin1String("name"), enquote(collector.resolvedClass->value( |