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));