diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 3533a95349e2879dd00ba462b78dc7963e3d275e..25be663941686751106a744c85692e0ea86d26a8 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -299,8 +299,16 @@ void NavigatorTreeModel::handleChangedItem(QStandardItem *item) ItemRow itemRow = itemRowForNode(node); if (item == itemRow.idItem) { if (node.isValidId(item->text())) { - if (node.view()->rewriterView()) - node.view()->rewriterView()->renameId(node.id(), item->text()); + if (node.id().isEmpty() || item->text().isEmpty()) { //no id + try { + node.setId(item->text()); + } catch (InvalidIdException &e) { //better save then sorry + QMessageBox::warning(0, tr("Invalid Id"), e.description()); + } + } else { //there is already an id, so we refactor + if (node.view()->rewriterView()) + node.view()->rewriterView()->renameId(node.id(), item->text()); + } } else { QMessageBox::warning(0, tr("Invalid Id"), tr("%1 is an invalid id").arg(item->text())); item->setText(node.id()); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index 51ce941ef32bcbabe73daea9f58eca769fd4ad1c..2122d25c964b8b5b970506e554e88499ecb93db3 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -356,8 +356,16 @@ void PropertyEditor::changeValue(const QString &propertyName) const QString newId = value->value().toString(); if (m_selectedNode.isValidId(newId)) { - if (rewriterView()) - rewriterView()->renameId(m_selectedNode.id(), newId); + if (m_selectedNode.id().isEmpty() || newId.isEmpty()) { //no id + try { + m_selectedNode.setId(newId); + } catch (InvalidIdException &e) { //better save then sorry + QMessageBox::warning(0, tr("Invalid Id"), e.description()); + } + } else { //there is already an id, so we refactor + if (rewriterView()) + rewriterView()->renameId(m_selectedNode.id(), newId); + } } else { value->setValue(m_selectedNode.id()); QMessageBox::warning(0, tr("Invalid Id"), tr("%1 is an invalid id").arg(newId));