diff --git a/src/plugins/qmldesigner/core/model/modelmerger.cpp b/src/plugins/qmldesigner/core/model/modelmerger.cpp index 4707db2eb7c3cd8ae4089e987eaa9a8385e486d5..7fc54351417696d268874538d1cb55f82a8f5370 100644 --- a/src/plugins/qmldesigner/core/model/modelmerger.cpp +++ b/src/plugins/qmldesigner/core/model/modelmerger.cpp @@ -81,16 +81,20 @@ static void syncId(ModelNode &outputNode, const ModelNode &inputNode, const QHas static void splitIdInBaseNameAndNumber(const QString &id, QString *baseId, int *number) { - QRegExp regularExpression("(.*)(\\d*)"); -// regularExpression.setMinimal(true); - regularExpression.setPatternSyntax(QRegExp::RegExp2); - regularExpression.indexIn(id); - QStringList splitedList = regularExpression.capturedTexts(); - *baseId = regularExpression.cap(1); + int counter = 0; + while(counter < id.count()) { + bool canConvertToInteger = false; + int newNumber = id.right(counter +1).toInt(&canConvertToInteger); + if (canConvertToInteger) + *number = newNumber; + else + break; + counter++; + } - qDebug() <<splitedList; + *baseId = id.left(id.count() - counter); } static void setupIdRenamingHash(const ModelNode &modelNode, QHash<QString, QString> &idRenamingHash, AbstractView *view) @@ -105,10 +109,10 @@ static void setupIdRenamingHash(const ModelNode &modelNode, QHash<QString, QStri splitIdInBaseNameAndNumber(newId, &baseId, &number); while (view->hasId(newId) || idRenamingHash.contains(newId)) { - - newId = baseId + QString::number(number).toLower(); + newId = baseId + QString::number(number); number++; } + idRenamingHash.insert(node.id(), newId); } }