QmlDesigner: Do not generate auxiliaryDataAsQML for offset -1

If a node does not have a proper offset, then the data is inconsistent.

Change-Id: I1fbff3e169b225bc4ca00b1deb21982f30281f9a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2019-02-11 13:01:35 +01:00
parent b71a6eec20
commit 5f5e2543a5

View File

@@ -486,6 +486,8 @@ QString RewriterView::auxiliaryDataAsQML() const
QString str = "Designer {\n ";
QTC_ASSERT(!m_canonicalIntModelNode.isEmpty(), return {});
int columnCount = 0;
for (const auto &node : allModelNodes()) {
QHash<PropertyName, QVariant> data = node.auxiliaryData();
@@ -727,8 +729,11 @@ void RewriterView::setupCanonicalHashes() const
using myPair = std::pair<ModelNode,int>;
std::vector<myPair> data;
for (const ModelNode &node : allModelNodes())
data.emplace_back(std::make_pair(node, nodeOffset(node)));
for (const ModelNode &node : allModelNodes()) {
int offset = nodeOffset(node);
QTC_ASSERT(offset > 0, qDebug() << Q_FUNC_INFO << "no offset" << node; return);
data.emplace_back(std::make_pair(node, offset));
}
std::sort(data.begin(), data.end(), [](myPair a, myPair b) {
return a.second < b.second;
@@ -1066,6 +1071,8 @@ void RewriterView::restoreAuxiliaryData()
setupCanonicalHashes();
QTC_ASSERT(!m_canonicalIntModelNode.isEmpty(), return);
const QString text = m_textModifier->text();
int startIndex = text.indexOf(annotationsStart());