aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2020-09-01 13:52:41 +0200
committerVikas Pachdha <vikas.pachdha@qt.io>2020-09-01 15:17:44 +0000
commit727f25fbd649fa536235a9705e14dda826fd4d72 (patch)
tree2ebfe9c854ffb071c4329953b8d422cc4dd8433e /src
parent980ba0d83dbadfc1feec82a1fcf08916cd923df5 (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.cpp21
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;