diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-05-05 10:41:53 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-05-06 17:42:53 +0000 |
commit | d21afa597d90656c8986289899fd078c39b70f00 (patch) | |
tree | 781a88835b709828b6ddb5387a9efbdbd757e3ab /src/render/materialsystem/qshaderdata.cpp | |
parent | 69f5bfdd455bba39a0070088877dd9e09a096add (diff) |
QShaderData should notify dynamic property changes
We only sent the value at creation time, but not on updates. Catch those
specific changes and notify them to the backend.
Change-Id: I1f8b7f5f90ecb25a29bc105452eec77e07cb30d4
Task-number: QTBUG-53161
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/materialsystem/qshaderdata.cpp')
-rw-r--r-- | src/render/materialsystem/qshaderdata.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/render/materialsystem/qshaderdata.cpp b/src/render/materialsystem/qshaderdata.cpp index 9ce4b3fb3..8db52fcf8 100644 --- a/src/render/materialsystem/qshaderdata.cpp +++ b/src/render/materialsystem/qshaderdata.cpp @@ -88,6 +88,27 @@ QShaderData::QShaderData(QShaderDataPrivate &dd, QNode *parent) { } +bool QShaderData::event(QEvent *event) +{ + Q_D(QShaderData); + + if (event->type() == QEvent::DynamicPropertyChange) { + auto e = static_cast<QDynamicPropertyChangeEvent*>(event); + const auto propertyName = e->propertyName(); + + const QVariant data = property(propertyName); + if (data.canConvert<Qt3DCore::QNode*>()) { + const auto node = data.value<Qt3DCore::QNode*>(); + const auto id = node ? node->id() : Qt3DCore::QNodeId(); + d->notifyDynamicPropertyChange(propertyName, QVariant::fromValue(id)); + } else { + d->notifyDynamicPropertyChange(propertyName, data); + } + } + + return QComponent::event(event); +} + Qt3DCore::QNodeCreatedChangeBasePtr QShaderData::createNodeCreationChange() const { Q_D(const QShaderData); |