aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickconnections.cpp
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2012-04-23 10:17:57 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-23 05:23:34 +0200
commit9542511b013588b2ceb132ec8b34879ec904a21e (patch)
tree9fe2b2996878c14f61d54561f16ce64bbe096958 /src/quick/util/qquickconnections.cpp
parent6d2ed5d0b645f5af383a123e869d061b235b4b85 (diff)
Support and use parameters in QQmlNotifierEndpoint.
Allow QQmlNotifierEndpoint to support signals with parameters. Update QQmlBoundSignal to use this support. Change-Id: Ie2a245b39283b0b66d66bd2350e8bc85fe519bb5 Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/quick/util/qquickconnections.cpp')
-rw-r--r--src/quick/util/qquickconnections.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/quick/util/qquickconnections.cpp b/src/quick/util/qquickconnections.cpp
index 27b66ba38f..8116ac3425 100644
--- a/src/quick/util/qquickconnections.cpp
+++ b/src/quick/util/qquickconnections.cpp
@@ -151,6 +151,16 @@ QObject *QQuickConnections::target() const
return d->targetSet ? d->target : parent();
}
+class QQmlBoundSignalDeleter : public QObject
+{
+public:
+ QQmlBoundSignalDeleter(QQmlBoundSignal *signal) : m_signal(signal) { m_signal->removeFromObject(); }
+ ~QQmlBoundSignalDeleter() { delete m_signal; }
+
+private:
+ QQmlBoundSignal *m_signal;
+};
+
void QQuickConnections::setTarget(QObject *obj)
{
Q_D(QQuickConnections);
@@ -161,7 +171,7 @@ void QQuickConnections::setTarget(QObject *obj)
// It is possible that target is being changed due to one of our signal
// handlers -> use deleteLater().
if (s->isEvaluating())
- s->deleteLater();
+ (new QQmlBoundSignalDeleter(s))->deleteLater();
else
delete s;
}