From 155296b0701c443afb6358c2e09557350e6aadab Mon Sep 17 00:00:00 2001
From: Christiaan Janssen <christiaan.janssen@nokia.com>
Date: Fri, 5 Mar 2010 17:22:27 +0100
Subject: [PATCH] QmlDesigner.StatesEditor:  Showing message box when wrong
 state name is entered

---
 .../components/stateseditor/stateseditormodel.cpp     | 11 ++++++++---
 .../components/stateseditor/stateslist.qml            | 11 +++++++----
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp
index dc175078f41..5fef38fd6a6 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp
@@ -31,6 +31,7 @@
 #include "stateseditorview.h"
 
 #include <QtCore/QDebug>
+#include <QMessageBox>
 
 enum {
     debug = false
@@ -118,10 +119,14 @@ void StatesEditorModel::renameState(int i, const QString &newName)
     Q_ASSERT(i > 0 && i < m_stateNames.count());
 
     if (m_stateNames[i] != newName) {
-        m_stateNames.replace(i, newName);
-        m_statesView->renameState(i,newName);
+        if (m_stateNames.contains(newName) || newName.isEmpty()) {
+            QMessageBox::warning(0, tr("Invalid state name"), newName.isEmpty()?tr("The empty string as a name is reserved for the base state."):tr("Name already used in another state"));
+        } else {
+            m_stateNames.replace(i, newName);
+            m_statesView->renameState(i,newName);
 
-        emit dataChanged(createIndex(i, 0), createIndex(i, 0));
+            emit dataChanged(createIndex(i, 0), createIndex(i, 0));
+        }
     }
 }
 
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
index ca6585b2aac..af892cb4916 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
+++ b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
@@ -360,9 +360,10 @@ Rectangle {
                     border.color:"#4f4f4f"
                     radius:4
                     function unFocus() {
-                        if (visible)
+                        if (visible) {
+                            visible=false;
                             statesEditorModel.renameState(index,stateNameInput.text);
-                        visible=false;
+                        }
                     }
 
                     // There is no QFontMetrics equivalent in QML
@@ -399,8 +400,10 @@ Rectangle {
                                     x = -cM;
                             }
                             onAccepted: {
-                                statesEditorModel.renameState(index,text);
-                                stateNameEditor.visible=false;
+                                if (stateNameEditor.visible) {
+                                    stateNameEditor.visible=false;
+                                    statesEditorModel.renameState(index,text);
+                                }
                             }
                         }
                     }
-- 
GitLab