diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-05-30 14:36:53 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-05-31 15:49:11 +0200 |
commit | 76efd5b9713431984c143bf2b861f196dd05acb8 (patch) | |
tree | c0a582c78c72cff57993c7666b714e27944f0cf1 | |
parent | 27fbaaf007b466d8e591502c2d17a1f28071dd3c (diff) |
Corrected the way a Transform is updated
From C++ or QML, the transform has to be notified if one of its inner
AbstractTransform has changed. The AbstractTransform transformChanged signal
is now connect directly in Transform. It was only done on the QML side
previously. This cause transforms not to be updated when used from C++.
Change-Id: Ic690d09bcf280915dc3c32868ad0156f36809e5b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/core/transforms/transform.cpp | 2 | ||||
-rw-r--r-- | src/quick3d/quick3d/items/quick3dtransform.cpp | 5 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/core/transforms/transform.cpp b/src/core/transforms/transform.cpp index 52fb2725b..4be691984 100644 --- a/src/core/transforms/transform.cpp +++ b/src/core/transforms/transform.cpp @@ -105,12 +105,14 @@ void Transform::setRotationCenter(const QVector3D &rc) void Transform::appendTransform(AbstractTransform *xform) { m_transforms.append( xform ); + QObject::connect(xform, SIGNAL(transformUpdated()), this, SLOT(setTransformsDirty())); setTransformsDirty(); } void Transform::removeTransform(AbstractTransform *xform) { m_transforms.removeOne( xform ); + QObject::disconnect(xform, SIGNAL(transformUpdated()), this, SLOT(setTransformsDirty())); setTransformsDirty(); } diff --git a/src/quick3d/quick3d/items/quick3dtransform.cpp b/src/quick3d/quick3d/items/quick3dtransform.cpp index cc6ff3ee2..02057cfba 100644 --- a/src/quick3d/quick3d/items/quick3dtransform.cpp +++ b/src/quick3d/quick3d/items/quick3dtransform.cpp @@ -68,7 +68,6 @@ void Quick3DTransform::qmlAppendTransform(QQmlListProperty<AbstractTransform> *l Transform *self = static_cast<Transform *>(list->object); self->appendTransform(obj); - QObject::connect(obj, SIGNAL(transformUpdated()), self, SLOT(setTransformsDirty())); } AbstractTransform* Quick3DTransform::transformAt(QQmlListProperty<AbstractTransform> *list, int index) @@ -86,10 +85,8 @@ int Quick3DTransform::transformCount(QQmlListProperty<AbstractTransform> *list) void Quick3DTransform::qmlClearTransforms(QQmlListProperty<AbstractTransform> *list) { Transform *self = static_cast<Transform *>(list->object); - Q_FOREACH (AbstractTransform *trans, self->transforms()) { - QObject::disconnect(trans, SIGNAL(transformUpdated()), self, SLOT(setTransformsDirty())); + Q_FOREACH (AbstractTransform *trans, self->transforms()) self->removeTransform(trans); - } } } //Quick |