diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp index dc175078f41bd0a0684830c72d8f710563d27519..5fef38fd6a64705b0877c5a8bc29a600ec7ad3aa 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 ca6585b2aac6720219a6031c278ae1ad094a08b3..af892cb491602fdfeebf8513dbfcb1fd2ea76c1d 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); + } } } }