forked from qt-creator/qt-creator
QmlDesigner: Do not assume that the active state group is the root node
Change-Id: Ifd315a7e1d8c833f612e305127911634174a8e5b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
@@ -207,7 +207,8 @@ 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 (!QmlVisualNode::isValidQmlVisualNode(acitveStatesGroupNode()))
|
if (!QmlVisualNode::isValidQmlVisualNode(acitveStatesGroupNode())
|
||||||
|
&& m_activeStatesGroupNode.type() != "QtQuick.StateGroup")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_STATE_ADDED);
|
QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_STATE_ADDED);
|
||||||
@@ -508,7 +509,7 @@ void StatesEditorView::modelAboutToBeDetached(Model *model)
|
|||||||
void StatesEditorView::propertiesRemoved(const QList<AbstractProperty>& propertyList)
|
void StatesEditorView::propertiesRemoved(const QList<AbstractProperty>& propertyList)
|
||||||
{
|
{
|
||||||
for (const AbstractProperty &property : propertyList) {
|
for (const AbstractProperty &property : propertyList) {
|
||||||
if (property.name() == "states" && property.parentModelNode().isRootNode())
|
if (property.name() == "states" && property.parentModelNode() == activeStateGroup().modelNode())
|
||||||
resetModel();
|
resetModel();
|
||||||
if (property.name() == "when" && QmlModelState::isValidQmlModelState(property.parentModelNode()))
|
if (property.name() == "when" && QmlModelState::isValidQmlModelState(property.parentModelNode()))
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -519,7 +520,7 @@ void StatesEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
|
|||||||
{
|
{
|
||||||
if (removedNode.hasParentProperty()) {
|
if (removedNode.hasParentProperty()) {
|
||||||
const NodeAbstractProperty propertyParent = removedNode.parentProperty();
|
const NodeAbstractProperty propertyParent = removedNode.parentProperty();
|
||||||
if (propertyParent.parentModelNode().isRootNode() && propertyParent.name() == "states")
|
if (propertyParent.parentModelNode() == activeStateGroup().modelNode() && propertyParent.name() == "states")
|
||||||
m_lastIndex = propertyParent.indexOf(removedNode);
|
m_lastIndex = propertyParent.indexOf(removedNode);
|
||||||
}
|
}
|
||||||
if (currentState().isValid() && removedNode == currentState())
|
if (currentState().isValid() && removedNode == currentState())
|
||||||
@@ -528,7 +529,7 @@ void StatesEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
|
|||||||
|
|
||||||
void StatesEditorView::nodeRemoved(const ModelNode & /*removedNode*/, const NodeAbstractProperty &parentProperty, PropertyChangeFlags /*propertyChange*/)
|
void StatesEditorView::nodeRemoved(const ModelNode & /*removedNode*/, const NodeAbstractProperty &parentProperty, PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
if (parentProperty.isValid() && parentProperty.parentModelNode().isRootNode() && parentProperty.name() == "states") {
|
if (parentProperty.isValid() && parentProperty.parentModelNode() == activeStateGroup().modelNode() && parentProperty.name() == "states") {
|
||||||
m_statesEditorModel->removeState(m_lastIndex);
|
m_statesEditorModel->removeState(m_lastIndex);
|
||||||
m_lastIndex = -1;
|
m_lastIndex = -1;
|
||||||
}
|
}
|
||||||
@@ -536,19 +537,25 @@ void StatesEditorView::nodeRemoved(const ModelNode & /*removedNode*/, const Node
|
|||||||
|
|
||||||
void StatesEditorView::nodeAboutToBeReparented(const ModelNode &node, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
void StatesEditorView::nodeAboutToBeReparented(const ModelNode &node, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
if (oldPropertyParent.isValid() && oldPropertyParent.parentModelNode().isRootNode() && oldPropertyParent.name() == "states")
|
if (oldPropertyParent.isValid()
|
||||||
|
&& oldPropertyParent.parentModelNode() == activeStateGroup().modelNode()
|
||||||
|
&& oldPropertyParent.name() == "states")
|
||||||
m_lastIndex = oldPropertyParent.indexOf(node);
|
m_lastIndex = oldPropertyParent.indexOf(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void StatesEditorView::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
void StatesEditorView::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
if (oldPropertyParent.isValid() && oldPropertyParent.parentModelNode().isRootNode() && oldPropertyParent.name() == "states")
|
if (oldPropertyParent.isValid()
|
||||||
|
&& oldPropertyParent.parentModelNode() == activeStateGroup().modelNode()
|
||||||
|
&& oldPropertyParent.name() == "states")
|
||||||
m_statesEditorModel->removeState(m_lastIndex);
|
m_statesEditorModel->removeState(m_lastIndex);
|
||||||
|
|
||||||
m_lastIndex = -1;
|
m_lastIndex = -1;
|
||||||
|
|
||||||
if (newPropertyParent.isValid() && newPropertyParent.parentModelNode().isRootNode() && newPropertyParent.name() == "states") {
|
if (newPropertyParent.isValid()
|
||||||
|
&& newPropertyParent.parentModelNode() == activeStateGroup().modelNode()
|
||||||
|
&& newPropertyParent.name() == "states") {
|
||||||
int index = newPropertyParent.indexOf(node);
|
int index = newPropertyParent.indexOf(node);
|
||||||
m_statesEditorModel->insertState(index);
|
m_statesEditorModel->insertState(index);
|
||||||
}
|
}
|
||||||
@@ -556,7 +563,8 @@ void StatesEditorView::nodeReparented(const ModelNode &node, const NodeAbstractP
|
|||||||
|
|
||||||
void StatesEditorView::nodeOrderChanged(const NodeListProperty &listProperty)
|
void StatesEditorView::nodeOrderChanged(const NodeListProperty &listProperty)
|
||||||
{
|
{
|
||||||
if (listProperty.isValid() && listProperty.parentModelNode().isRootNode() && listProperty.name() == "states")
|
if (listProperty.isValid() && listProperty.parentModelNode() == activeStateGroup().modelNode()
|
||||||
|
&& listProperty.name() == "states")
|
||||||
resetModel();
|
resetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,7 +590,8 @@ void StatesEditorView::variantPropertiesChanged(const QList<VariantProperty> &pr
|
|||||||
for (const VariantProperty &property : propertyList) {
|
for (const VariantProperty &property : propertyList) {
|
||||||
if (property.name() == "name" && QmlModelState::isValidQmlModelState(property.parentModelNode()))
|
if (property.name() == "name" && QmlModelState::isValidQmlModelState(property.parentModelNode()))
|
||||||
resetModel();
|
resetModel();
|
||||||
else if (property.name() == "state" && property.parentModelNode().isRootNode())
|
else if (property.name() == "state"
|
||||||
|
&& property.parentModelNode() == activeStateGroup().modelNode())
|
||||||
resetModel();
|
resetModel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user