diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-08-21 16:44:04 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-08-27 10:03:27 +0000 |
commit | acdb971048652b49941f3d4c009a5cadf466047c (patch) | |
tree | c47d9f369d4b6cda376bfe30a271de289911a642 | |
parent | 151373396fc52de763eff05da0b0071130f521db (diff) |
QmlDesigner: Add suffux to invalid ids
Instead of replacing them with "element" add a suffix.
Change-Id: Idc72ba9a8a7b4f48d4e325378b975cafeab88bd4
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/abstractview.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 3be64be127..f5ef94f621 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -508,9 +508,13 @@ QString AbstractView::generateNewId(const QString &prefixName) const { QString fixedPrefix = firstCharToLower(prefixName); fixedPrefix.remove(' '); + + bool forceSuffix = false; + if (!ModelNode::isValidId(fixedPrefix)) - return generateNewId("element"); - int counter = 1; + forceSuffix = true; + + int counter = 0; /* First try just the prefixName without number as postfix, then continue with 2 and further as postfix * until id does not already exist. @@ -520,11 +524,14 @@ QString AbstractView::generateNewId(const QString &prefixName) const */ QString newId = QString(QStringLiteral("%1")).arg(firstCharToLower(prefixName)); + if (forceSuffix) + QString(QStringLiteral("%1%2")).arg(firstCharToLower(prefixName)).arg(1); + newId.remove(QRegExp(QStringLiteral("[^a-zA-Z0-9_]"))); while (!ModelNode::isValidId(newId) || hasId(newId) || rootModelNode().hasProperty(newId.toUtf8()) || newId == "item") { counter += 1; - newId = QString(QStringLiteral("%1%2")).arg(firstCharToLower(prefixName)).arg(counter - 1); + newId = QString(QStringLiteral("%1%2")).arg(firstCharToLower(prefixName)).arg(counter); newId.remove(QRegExp(QStringLiteral("[^a-zA-Z0-9_]"))); } |