aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2020-06-18 19:46:01 +0200
committerTim Jenssen <tim.jenssen@qt.io>2020-06-30 10:28:07 +0000
commit1e6807c680924f39c071a5d5db4a3881adb14c19 (patch)
tree5b48ff6d75678e13e6422952a8ae5aed9f0916f8 /src/plugins/qmldesigner/designercore
parent009c2745e27a9b1e9bc3886f159c271fb491c7d4 (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.h14
-rw-r--r--src/plugins/qmldesigner/designercore/model/modelnode.cpp19
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;