From 4aee89d4724ec15c38376d4eab664a2f87767ff4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 8 Oct 2019 17:01:40 +0200 Subject: [PATCH] QmlDesigner: Fix states for QmlVisualNode Adding, removing and editing states does now work for all QmlVisualNodes and is not restricted to QmlItemNode anymore. This makes using states possible for scenes that have a QtQuick3D.Node as root object. Change-Id: I51fb17434e7e663823c8c8962e683634324d86d0 Reviewed-by: Miikka Heikkinen Reviewed-by: Mahmoud Badri Reviewed-by: Alessandro Portale --- .../components/stateseditor/stateseditorview.cpp | 8 +++++--- src/plugins/qmldesigner/designercore/model/qmlstate.cpp | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 1d9f1eec84f..001a5a902c5 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -138,7 +138,7 @@ void StatesEditorView::createNewState() void StatesEditorView::addState() { // can happen when root node is e.g. a ListModel - if (!QmlItemNode::isValidQmlItemNode(rootModelNode())) + if (!QmlVisualNode::isValidQmlVisualNode(rootModelNode())) return; QStringList modelStateNames = rootStateGroup().names(); @@ -202,8 +202,10 @@ void StatesEditorView::duplicateCurrentState() void StatesEditorView::checkForStatesAvailability() { - if (m_statesEditorWidget) - m_statesEditorWidget->showAddNewStatesButton(rootModelNode().metaInfo().isSubclassOf("QtQuick.Item")); + if (m_statesEditorWidget) { + const bool isVisual = QmlVisualNode::isValidQmlVisualNode(rootModelNode()); + m_statesEditorWidget->showAddNewStatesButton(isVisual); + } } void StatesEditorView::setCurrentState(const QmlModelState &state) diff --git a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp index a4135e3a322..2961951ef88 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp @@ -254,7 +254,7 @@ QmlModelState QmlModelState::duplicate(const QString &name) const if (!isValid()) throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); - if (!QmlItemNode::isValidQmlItemNode(modelNode().parentProperty().parentModelNode())) + if (!QmlVisualNode::isValidQmlVisualNode(modelNode().parentProperty().parentModelNode())) throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); // QmlModelState newState(stateGroup().addState(name));