diff options
author | Marco Bubke <marco.bubke@qt.io> | 2020-06-18 19:46:01 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-06-30 10:28:07 +0000 |
commit | 1e6807c680924f39c071a5d5db4a3881adb14c19 (patch) | |
tree | 5b48ff6d75678e13e6422952a8ae5aed9f0916f8 /src/plugins/qmldesigner/designercore | |
parent | 009c2745e27a9b1e9bc3886f159c271fb491c7d4 (diff) |
QmlDesigner: Add listmodeleditor
Task-number: QDS-2294
Change-Id: I66cae3a0d4265ab112eaf6b04e3a5972d185ff43
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/designercore')
-rw-r--r-- | src/plugins/qmldesigner/designercore/include/modelnode.h | 14 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/modelnode.cpp | 19 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/modelnode.h b/src/plugins/qmldesigner/designercore/include/modelnode.h index 6f3d5eb6df..3197e746ab 100644 --- a/src/plugins/qmldesigner/designercore/include/modelnode.h +++ b/src/plugins/qmldesigner/designercore/include/modelnode.h @@ -91,9 +91,12 @@ public: ModelNode(const Internal::InternalNodePointer &internalNode, Model *model, const AbstractView *view); ModelNode(const ModelNode &modelNode, AbstractView *view); ModelNode(const ModelNode &other); + ModelNode(ModelNode &&other); ~ModelNode(); - ModelNode& operator=(const ModelNode &other); + ModelNode &operator=(const ModelNode &other); + ModelNode &operator=(ModelNode &&other); + TypeName type() const; QString simplifiedTypeName() const; QString displayName() const; @@ -226,6 +229,15 @@ public: bool isSubclassOf(const TypeName &typeName, int majorVersion = -1, int minorVersion = -1) const; QIcon typeIcon() const; + friend void swap(ModelNode &first, ModelNode &second) + { + using std::swap; + + swap(first.m_internalNode, second.m_internalNode); + swap(first.m_model, second.m_model); + swap(first.m_view, second.m_view); + } + private: // functions Internal::InternalNodePointer internalNode() const; diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index b4c21564c7..eb2d285997 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -93,7 +93,25 @@ ModelNode::ModelNode(const ModelNode &modelNode, AbstractView *view) m_model(modelNode.model()), m_view(view) { +} + +ModelNode::ModelNode(ModelNode &&other) + : m_internalNode(std::move(other.m_internalNode)) + , m_model(std::move(other.m_model)) + , m_view(std::move(other.m_view)) +{ + other.m_model = {}; + other.m_view = {}; +} +ModelNode &ModelNode::operator=(ModelNode &&other) +{ + ModelNode newNode; + + swap(other, newNode); + swap(*this, newNode); + + return *this; } /*! \brief contructs a invalid model node @@ -103,7 +121,6 @@ ModelNode::ModelNode(const ModelNode &modelNode, AbstractView *view) ModelNode::ModelNode(): m_internalNode(new InternalNode) { - } ModelNode::ModelNode(const ModelNode &other) = default; |