forked from qt-creator/qt-creator
AssetExport: Fix incorrect Node lineage
Task-number: QDS-2667 Change-Id: I50bd4fbd093734d2df35fce8aed57af28469d358 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user