diff --git a/share/qtcreator/qmldesigner/newstateseditor/Main.qml b/share/qtcreator/qmldesigner/newstateseditor/Main.qml index 92bf99b86c8..7f20190322a 100644 --- a/share/qtcreator/qmldesigner/newstateseditor/Main.qml +++ b/share/qtcreator/qmldesigner/newstateseditor/Main.qml @@ -863,6 +863,7 @@ Rectangle { Item { id: addWrapper + visible: canAddNewStates Canvas { id: addCanvas diff --git a/src/plugins/qmldesigner/components/stateseditornew/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditornew/stateseditorview.cpp index e20f5df7b47..c263a510966 100644 --- a/src/plugins/qmldesigner/components/stateseditornew/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditornew/stateseditorview.cpp @@ -105,6 +105,8 @@ void StatesEditorView::setActiveStatesGroupNode(const ModelNode &modelNode) m_activeStatesGroupNode = modelNode; resetModel(); + checkForStatesAvailability(); + emit m_statesEditorModel->activeStateGroupChanged(); emit m_statesEditorModel->activeStateGroupIndexChanged(); } @@ -430,8 +432,10 @@ void StatesEditorView::resetStateGroups() void StatesEditorView::checkForStatesAvailability() { if (m_statesEditorWidget) { - const bool isVisual = QmlVisualNode::isValidQmlVisualNode(activeStatesGroupNode()); - m_statesEditorWidget->showAddNewStatesButton(isVisual); + const bool isVisual = activeStatesGroupNode().metaInfo().isBasedOn( + model()->qtQuickItemMetaInfo(), model()->qtQuick3DNodeMetaInfo()); + const bool isRoot = activeStatesGroupNode().isRootNode(); + m_statesEditorWidget->showAddNewStatesButton(isVisual || !isRoot); } }