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 <miikka.heikkinen@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Thomas Hartmann
2019-10-08 17:01:40 +02:00
parent d769db2c78
commit 4aee89d472
2 changed files with 6 additions and 4 deletions

View File

@@ -138,7 +138,7 @@ void StatesEditorView::createNewState()
void StatesEditorView::addState() void StatesEditorView::addState()
{ {
// can happen when root node is e.g. a ListModel // can happen when root node is e.g. a ListModel
if (!QmlItemNode::isValidQmlItemNode(rootModelNode())) if (!QmlVisualNode::isValidQmlVisualNode(rootModelNode()))
return; return;
QStringList modelStateNames = rootStateGroup().names(); QStringList modelStateNames = rootStateGroup().names();
@@ -202,8 +202,10 @@ void StatesEditorView::duplicateCurrentState()
void StatesEditorView::checkForStatesAvailability() void StatesEditorView::checkForStatesAvailability()
{ {
if (m_statesEditorWidget) if (m_statesEditorWidget) {
m_statesEditorWidget->showAddNewStatesButton(rootModelNode().metaInfo().isSubclassOf("QtQuick.Item")); const bool isVisual = QmlVisualNode::isValidQmlVisualNode(rootModelNode());
m_statesEditorWidget->showAddNewStatesButton(isVisual);
}
} }
void StatesEditorView::setCurrentState(const QmlModelState &state) void StatesEditorView::setCurrentState(const QmlModelState &state)

View File

@@ -254,7 +254,7 @@ QmlModelState QmlModelState::duplicate(const QString &name) const
if (!isValid()) if (!isValid())
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
if (!QmlItemNode::isValidQmlItemNode(modelNode().parentProperty().parentModelNode())) if (!QmlVisualNode::isValidQmlVisualNode(modelNode().parentProperty().parentModelNode()))
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
// QmlModelState newState(stateGroup().addState(name)); // QmlModelState newState(stateGroup().addState(name));