diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2020-09-01 13:52:41 +0200 |
---|---|---|
committer | Vikas Pachdha <vikas.pachdha@qt.io> | 2020-09-01 15:17:44 +0000 |
commit | 727f25fbd649fa536235a9705e14dda826fd4d72 (patch) | |
tree | 2ebfe9c854ffb071c4329953b8d422cc4dd8433e /src | |
parent | 980ba0d83dbadfc1feec82a1fcf08916cd923df5 (diff) |
AssetExport: Fix incorrect Node lineage
Task-number: QDS-2667
Change-Id: I50bd4fbd093734d2df35fce8aed57af28469d358
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp b/src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp index 973cb6e013..f2f28b8617 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp @@ -30,6 +30,7 @@ #include "model.h" #include "nodeabstractproperty.h" +#include "nodemetainfo.h" #include "rewriterview.h" #include "utils/qtcassert.h" @@ -41,13 +42,16 @@ namespace { Q_LOGGING_CATEGORY(loggerInfo, "qtc.designer.assetExportPlugin.modelExporter", QtInfoMsg) -static void populateLineage(const QmlDesigner::ModelNode &node, QByteArrayList &lineage) +static QByteArrayList populateLineage(const QmlDesigner::ModelNode &node) { + QByteArrayList lineage; if (!node.isValid() || node.type().isEmpty()) - return; - lineage.append(node.type()); - if (node.hasParentProperty()) - populateLineage(node.parentProperty().parentModelNode(), lineage); + return {}; + + for (auto &info : node.metaInfo().superClasses()) + lineage.append(info.typeName()); + + return lineage; } } @@ -86,8 +90,7 @@ void Component::exportComponent() ModelNodeParser *Component::createNodeParser(const ModelNode &node) const { - QByteArrayList lineage; - populateLineage(node, lineage); + QByteArrayList lineage = populateLineage(node); std::unique_ptr<ModelNodeParser> reader; for (auto &parserCreator: m_readers) { std::unique_ptr<ModelNodeParser> r(parserCreator->instance(lineage, node)); @@ -120,8 +123,8 @@ QJsonObject Component::nodeToJson(const ModelNode &node) } jsonObject = parser->json(*this); } else { - ExportNotification::addError(tr("Error exporting component %1. Parser unavailable.") - .arg(node.id())); + ExportNotification::addError(tr("Error exporting node %1. Cannot parse type %2.") + .arg(node.id()).arg(QString::fromUtf8(node.type()))); } QJsonArray children; |