diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp index 8a6c06fcdc7..026596b876d 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp @@ -112,7 +112,7 @@ void DesignerActionManagerView::selectedNodesChanged(const QList &sel emit selectionChanged(!selectedNodes.isEmpty(), singleSelectedModelNode().isRootNode()); } -void DesignerActionManagerView::nodeOrderChanged(const NodeListProperty &, const ModelNode &, int) +void DesignerActionManagerView::nodeOrderChanged(const NodeListProperty &) { setupContext(SelectionContext::UpdateMode::NodeHierachy); } diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h index a7a34271ea2..f7777bcac1d 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h @@ -58,7 +58,7 @@ public: void currentStateChanged(const ModelNode &) override; void selectedNodesChanged(const QList &, const QList &) override; - void nodeOrderChanged(const NodeListProperty &, const ModelNode &, int ) override; + void nodeOrderChanged(const NodeListProperty &) override; void importsChanged(const QList &, const QList &) override; void signalHandlerPropertiesChanged(const QVector &/*propertyList*/, PropertyChangeFlags /*propertyChange*/) override; void variantPropertiesChanged(const QList& propertyList, PropertyChangeFlags propertyChangeFlag) override; diff --git a/src/plugins/qmldesigner/components/debugview/debugview.cpp b/src/plugins/qmldesigner/components/debugview/debugview.cpp index c4dd86c44e7..a8b0b34f10e 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -513,16 +513,13 @@ void DebugView::currentStateChanged(const ModelNode &/*node*/) } -void DebugView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) +void DebugView::nodeOrderChanged(const NodeListProperty &listProperty) { if (isDebugViewEnabled()) { QTextStream message; QString string; message.setString(&string); - message << movedNode << listProperty; - message << oldIndex << "to" << listProperty.indexOf(movedNode); - log("::nodeSlide:", string); } } diff --git a/src/plugins/qmldesigner/components/debugview/debugview.h b/src/plugins/qmldesigner/components/debugview/debugview.h index ba6e0537864..3e986917e14 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.h +++ b/src/plugins/qmldesigner/components/debugview/debugview.h @@ -88,7 +88,7 @@ public: void nodeAboutToBeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, PropertyChangeFlags propertyChange) override; void instancesToken(const QString &tokenName, int tokenNumber, const QVector &nodeVector) override; void currentStateChanged(const ModelNode &node) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty) override; protected: void log(const QString &title, const QString &message, bool highlight = false); diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index b3440777881..2ba7941b3db 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -346,9 +346,7 @@ void NavigatorView::instanceErrorChanged(const QVector &errorNodeList m_currentModelInterface->notifyDataChanged(modelNode); } -void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty, - const ModelNode &/*node*/, - int /*oldIndex*/) +void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty) { m_currentModelInterface->notifyModelNodesMoved(listProperty.directSubNodes()); diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.h b/src/plugins/qmldesigner/components/navigator/navigatorview.h index b78c9e612a2..d2470c8eb89 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.h +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.h @@ -75,7 +75,7 @@ public: void nodeAboutToBeRemoved(const ModelNode &removedNode) override; void nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty) override; void nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) override; void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override; diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index a25cb385d30..346382ad05e 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -526,7 +526,7 @@ void StatesEditorView::nodeReparented(const ModelNode &node, const NodeAbstractP } } -void StatesEditorView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode & /*movedNode*/, int /*oldIndex*/) +void StatesEditorView::nodeOrderChanged(const NodeListProperty &listProperty) { if (listProperty.isValid() && listProperty.parentModelNode().isRootNode() && listProperty.name() == "states") resetModel(); diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h index 44b4a3a380d..1ac7a6f39fa 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.h @@ -73,7 +73,7 @@ public: const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty) override; void bindingPropertiesChanged(const QList& propertyList, PropertyChangeFlags propertyChange) override; void variantPropertiesChanged(const QList& propertyList, PropertyChangeFlags propertyChange) override; diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index 95bf66949f5..c6eb7507813 100644 --- a/src/plugins/qmldesigner/designercore/include/abstractview.h +++ b/src/plugins/qmldesigner/designercore/include/abstractview.h @@ -232,7 +232,10 @@ public: virtual void fileUrlChanged(const QUrl &oldUrl, const QUrl &newUrl); - virtual void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex); + virtual void nodeOrderChanged(const NodeListProperty &listProperty); + virtual void nodeOrderChanged(const NodeListProperty &listProperty, + const ModelNode &movedNode, + int oldIndex); virtual void importsChanged(const QList &addedImports, const QList &removedImports); virtual void possibleImportsChanged(const QList &possibleImports); diff --git a/src/plugins/qmldesigner/designercore/include/forwardview.h b/src/plugins/qmldesigner/designercore/include/forwardview.h index 8d4406b6d2a..5b46204091f 100644 --- a/src/plugins/qmldesigner/designercore/include/forwardview.h +++ b/src/plugins/qmldesigner/designercore/include/forwardview.h @@ -65,7 +65,7 @@ public: void fileUrlChanged(const QUrl &oldUrl, const QUrl &newUrl) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty) override; void importsChanged(const QList &addedImports, const QList &removedImports) override; void auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data) override; @@ -211,12 +211,11 @@ void ForwardView::fileUrlChanged(const QUrl &oldUrl, const QUrl &newUr view->fileUrlChanged(oldUrl, newUrl); } -template -void ForwardView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) +template +void ForwardView::nodeOrderChanged(const NodeListProperty &listProperty) { foreach (const ViewTypePointer &view, m_targetViewList) - view->nodeOrderChanged(NodeListProperty(listProperty, view.data()), - ModelNode(movedNode, view.data()), oldIndex); + view->nodeOrderChanged(NodeListProperty(listProperty, view.data())); } template diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index 2027fc10bb8..42ec211373c 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -95,7 +95,7 @@ public: void nodeTypeChanged(const ModelNode& node, const TypeName &type, int majorVersion, int minorVersion) override; void fileUrlChanged(const QUrl &oldUrl, const QUrl &newUrl) override; void nodeIdChanged(const ModelNode& node, const QString& newId, const QString& oldId) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty) override; void importsChanged(const QList &addedImports, const QList &removedImports) override; void auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data) override; void customNotification(const AbstractView *view, const QString &identifier, const QList &nodeList, const QList &data) override; diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index c867b9a67d8..0af08934068 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -91,7 +91,9 @@ public: const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) override; void nodeIdChanged(const ModelNode& node, const QString& newId, const QString& oldId) override; - void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex) override; + void nodeOrderChanged(const NodeListProperty &listProperty, + const ModelNode &movedNode, + int /*oldIndex*/) override; void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override; void nodeTypeChanged(const ModelNode& node, const TypeName &type, int majorVersion, int minorVersion) override; void customNotification(const AbstractView *view, const QString &identifier, diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 4216dbb6aca..ef76b70079d 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -562,8 +562,7 @@ void NodeInstanceView::nodeIdChanged(const ModelNode& node, const QString& /*new } } -void NodeInstanceView::nodeOrderChanged(const NodeListProperty & listProperty, - const ModelNode & /*movedNode*/, int /*oldIndex*/) +void NodeInstanceView::nodeOrderChanged(const NodeListProperty &listProperty) { QTC_ASSERT(m_nodeInstanceServer, return); QVector containerList; diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 665562a44a4..e4e6b24d907 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -270,8 +270,11 @@ void AbstractView::fileUrlChanged(const QUrl &/*oldUrl*/, const QUrl &/*newUrl*/ { } -void AbstractView::nodeOrderChanged(const NodeListProperty &/*listProperty*/, const ModelNode &/*movedNode*/, int /*oldIndex*/) +void AbstractView::nodeOrderChanged(const NodeListProperty & /*listProperty*/) {} + +void AbstractView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &, int) { + nodeOrderChanged(listProperty); } /*! diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index d695be92ef2..9d6c23d9f12 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -880,12 +880,12 @@ void ModelPrivate::notifyNodeReparent(const InternalNodePointer &node, } void ModelPrivate::notifyNodeOrderChanged(const InternalNodeListPropertyPointer &internalListProperty, - const InternalNodePointer &node, int oldIndex) + const InternalNodePointer &node, + int oldIndex) { notifyNodeInstanceViewLast([&](AbstractView *view) { - view->nodeOrderChanged(NodeListProperty(internalListProperty, m_model, view), - ModelNode(node, m_model, view), - oldIndex); + NodeListProperty nodeListProperty(internalListProperty, m_model, view); + view->nodeOrderChanged(nodeListProperty, ModelNode(node, m_model, view), oldIndex); }); } diff --git a/src/plugins/qmldesigner/designercore/model/model_p.h b/src/plugins/qmldesigner/designercore/model/model_p.h index cc15226265e..1e0627c4f18 100644 --- a/src/plugins/qmldesigner/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/designercore/model/model_p.h @@ -156,7 +156,9 @@ public: void notifyVariantPropertiesChanged(const InternalNodePointer &node, const PropertyNameList &propertyNameList, AbstractView::PropertyChangeFlags propertyChange); void notifyScriptFunctionsChanged(const InternalNodePointer &node, const QStringList &scriptFunctionList); - void notifyNodeOrderChanged(const InternalNodeListPropertyPointer &internalListProperty, const InternalNodePointer &node, int oldIndex); + void notifyNodeOrderChanged(const InternalNodeListPropertyPointer &internalListProperty, + const InternalNodePointer &node, + int oldIndex); void notifyAuxiliaryDataChanged(const InternalNodePointer &node, const PropertyName &name, const QVariant &data); void notifyNodeSourceChanged(const InternalNodePointer &node, const QString &newNodeSource); diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 04ec87e0775..a1107504533 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -310,7 +310,9 @@ void RewriterView::nodeIdChanged(const ModelNode& node, const QString& newId, co applyChanges(); } -void RewriterView::nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int /*oldIndex*/) +void RewriterView::nodeOrderChanged(const NodeListProperty &listProperty, + const ModelNode &movedNode, + int /*oldIndex*/) { Q_ASSERT(textModifier()); if (textToModelMerger()->isActive()) @@ -326,6 +328,21 @@ void RewriterView::nodeOrderChanged(const NodeListProperty &listProperty, const applyChanges(); } +void RewriterView::nodeOrderChanged(const NodeListProperty &listProperty) +{ + Q_ASSERT(textModifier()); + if (textToModelMerger()->isActive()) + return; + + auto modelNodes = listProperty.directSubNodes(); + + for (const ModelNode &movedNode : modelNodes) + modelToTextMerger()->nodeSlidAround(movedNode, ModelNode{}); + + if (!isModificationGroupActive()) + applyChanges(); +} + void RewriterView::rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) { Q_ASSERT(textModifier()); diff --git a/tests/auto/qml/qmldesigner/testview.cpp b/tests/auto/qml/qmldesigner/testview.cpp index 23c50599c7d..6c9237aa266 100644 --- a/tests/auto/qml/qmldesigner/testview.cpp +++ b/tests/auto/qml/qmldesigner/testview.cpp @@ -161,10 +161,10 @@ void TestView::selectedNodesChanged(const QList &selecte m_methodCalls += MethodCall("selectedNodesChanged", QStringList() << selectedNodes.join(", ") << lastSelectedNodes.join(", ")); } - -void TestView::nodeOrderChanged(const QmlDesigner::NodeListProperty &listProperty, const QmlDesigner::ModelNode &movedNode, int oldIndex) +void TestView::nodeOrderChanged(const QmlDesigner::NodeListProperty &listProperty) { - m_methodCalls += MethodCall("nodeOrderChanged", QStringList() << QString::fromUtf8(listProperty.name()) << movedNode.id() << QString::number(oldIndex)); + m_methodCalls += MethodCall("nodeOrderChanged", + QStringList() << QString::fromUtf8(listProperty.name())); } void TestView::instancePropertyChanged(const QList > &) diff --git a/tests/auto/qml/qmldesigner/testview.h b/tests/auto/qml/qmldesigner/testview.h index 9a786114884..6fb835e038a 100644 --- a/tests/auto/qml/qmldesigner/testview.h +++ b/tests/auto/qml/qmldesigner/testview.h @@ -73,8 +73,7 @@ public: void selectedNodesChanged(const QList &selectedNodeList, const QList &lastSelectedNodeList); - void nodeOrderChanged(const QmlDesigner::NodeListProperty &listProperty, const QmlDesigner::ModelNode &movedNode, int oldIndex); - + void nodeOrderChanged(const QmlDesigner::NodeListProperty &listProperty); virtual void instancePropertyChanged(const QList > &propertyList); virtual void instancesCompleted(const QVector &completedNodeList); diff --git a/tests/unit/mockup/qmldesigner/designercore/include/nodeinstanceview.h b/tests/unit/mockup/qmldesigner/designercore/include/nodeinstanceview.h index 50dcf529b69..2cdcc0ac216 100644 --- a/tests/unit/mockup/qmldesigner/designercore/include/nodeinstanceview.h +++ b/tests/unit/mockup/qmldesigner/designercore/include/nodeinstanceview.h @@ -67,10 +67,7 @@ public: {} void nodeIdChanged(const ModelNode &node, const QString &newId, const QString &oldId) override {} - void nodeOrderChanged(const NodeListProperty &listProperty, - const ModelNode &movedNode, - int oldIndex) override - {} + void nodeOrderChanged(const NodeListProperty &listProperty) override {} void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override {} void nodeTypeChanged(const ModelNode &node, const TypeName &type, diff --git a/tests/unit/mockup/qmldesigner/designercore/include/rewriterview.h b/tests/unit/mockup/qmldesigner/designercore/include/rewriterview.h index 87be6d80062..c055f7d2529 100644 --- a/tests/unit/mockup/qmldesigner/designercore/include/rewriterview.h +++ b/tests/unit/mockup/qmldesigner/designercore/include/rewriterview.h @@ -87,7 +87,7 @@ public: AbstractView::PropertyChangeFlags) override {} void nodeIdChanged(const ModelNode &, const QString &, const QString &) override {} - void nodeOrderChanged(const NodeListProperty &, const ModelNode &, int) override {} + void nodeOrderChanged(const NodeListProperty &) override {} void rootNodeTypeChanged(const QString &, int, int) override {} void nodeTypeChanged(const ModelNode &, const TypeName &, int, int) override {} void customNotification(const AbstractView *,