summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-05-30 14:36:53 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-31 15:49:11 +0200
commit76efd5b9713431984c143bf2b861f196dd05acb8 (patch)
treec0a582c78c72cff57993c7666b714e27944f0cf1
parent27fbaaf007b466d8e591502c2d17a1f28071dd3c (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.cpp2
-rw-r--r--src/quick3d/quick3d/items/quick3dtransform.cpp5
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