summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-02-26 12:16:46 +0000
committerMike Krus <mike.krus@kdab.com>2020-02-27 14:19:19 +0000
commit2e97cde1dd6f0dec7ee36df8d02527b955597e07 (patch)
tree8a8668228a0b0b0cb15d3c288caef0c05deab387 /src/core
parent5bf4f93fcb8ff16aeadf55644be351c9989ab5b2 (diff)
Add QBackendNode::syncFromFrontEnd to public API
Removes need to per aspect overrides of QAbstractAspectPrivate::syncDirtyFrontEndNode which was required in Qt5 to preserve BC. Change-Id: Ib3b05af1c3ded1c985d35e4dec0fe203cdc907cb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/aspects/qabstractaspect.cpp10
-rw-r--r--src/core/nodes/qbackendnode.cpp18
-rw-r--r--src/core/nodes/qbackendnode.h3
-rw-r--r--src/core/nodes/qbackendnode_p.h1
4 files changed, 27 insertions, 5 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp
index 3f569a4ed..1e88e6216 100644
--- a/src/core/aspects/qabstractaspect.cpp
+++ b/src/core/aspects/qabstractaspect.cpp
@@ -224,6 +224,11 @@ void QAbstractAspectPrivate::syncDirtyFrontEndNodes(const QVector<QNode *> &node
}
}
+void QAbstractAspectPrivate::syncDirtyFrontEndNode(QNode *node, QBackendNode *backend, bool firstTime) const
+{
+ backend->syncFromFrontEnd(node, firstTime);
+}
+
void QAbstractAspectPrivate::syncDirtyEntityComponentNodes(const QVector<ComponentRelationshipChange> &changes)
{
auto getBackend = [this] (QNode *node) -> QBackendNode* {
@@ -258,11 +263,6 @@ void QAbstractAspectPrivate::syncDirtyEntityComponentNodes(const QVector<Compone
}
}
-void QAbstractAspectPrivate::syncDirtyFrontEndNode(QNode *, QBackendNode *, bool) const
-{
- // this would usually be overloaded in derived aspect classes
-}
-
QBackendNode *QAbstractAspectPrivate::createBackendNode(const NodeTreeChange &change) const
{
const QMetaObject *metaObj = change.metaObj;
diff --git a/src/core/nodes/qbackendnode.cpp b/src/core/nodes/qbackendnode.cpp
index 433c305cc..4d15e1789 100644
--- a/src/core/nodes/qbackendnode.cpp
+++ b/src/core/nodes/qbackendnode.cpp
@@ -61,6 +61,8 @@ QBackendNodePrivate::QBackendNodePrivate(QBackendNode::Mode mode)
{
}
+QBackendNodePrivate::~QBackendNodePrivate() = default;
+
void QBackendNodePrivate::setEnabled(bool enabled)
{
m_enabled = enabled;
@@ -186,6 +188,22 @@ QBackendNode::Mode QBackendNode::mode() const Q_DECL_NOTHROW
}
/*!
+ * \brief QBackendNode::syncFromFrontEnd
+ * \param frontEnd
+ * \param firstTime
+ *
+ * This is called by the aspect when a \a frontEnd node needs to synchronize it's changes
+ * with the backend (normally due to property changes).
+ *
+ * \a firstTime will be true if the backend node was just created
+ */
+void QBackendNode::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
+{
+ Q_UNUSED(frontEnd)
+ Q_UNUSED(firstTime)
+}
+
+/*!
* \internal
*/
QBackendNode::QBackendNode(QBackendNodePrivate &dd)
diff --git a/src/core/nodes/qbackendnode.h b/src/core/nodes/qbackendnode.h
index 4af1ae996..cefa41c52 100644
--- a/src/core/nodes/qbackendnode.h
+++ b/src/core/nodes/qbackendnode.h
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
namespace Qt3DCore {
+class QNode;
class QBackendNodePrivate;
class QBackendNode;
class QAspectEngine;
@@ -84,6 +85,8 @@ public:
Mode mode() const Q_DECL_NOEXCEPT;
+ virtual void syncFromFrontEnd(const QNode *frontEnd, bool firstTime);
+
protected:
Q_DECLARE_PRIVATE(QBackendNode)
explicit QBackendNode(QBackendNodePrivate &dd);
diff --git a/src/core/nodes/qbackendnode_p.h b/src/core/nodes/qbackendnode_p.h
index 8a4e4c57c..921c83a0b 100644
--- a/src/core/nodes/qbackendnode_p.h
+++ b/src/core/nodes/qbackendnode_p.h
@@ -65,6 +65,7 @@ class Q_3DCORE_PRIVATE_EXPORT QBackendNodePrivate
{
public:
QBackendNodePrivate(QBackendNode::Mode mode);
+ virtual ~QBackendNodePrivate();
void setEnabled(bool enabled);