From acdb971048652b49941f3d4c009a5cadf466047c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 21 Aug 2020 16:44:04 +0200 Subject: [PATCH] QmlDesigner: Add suffux to invalid ids Instead of replacing them with "element" add a suffix. Change-Id: Idc72ba9a8a7b4f48d4e325378b975cafeab88bd4 Reviewed-by: Miikka Heikkinen Reviewed-by: Marco Bubke --- .../qmldesigner/designercore/model/abstractview.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 3be64be127d..f5ef94f6216 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_]"))); }