Provide access to (dis)connectNotify() from other objects.
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>
Wed, 18 Jul 2012 13:17:20 +0000 (15:17 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 24 Jul 2012 02:23:45 +0000 (04:23 +0200)
This is the first step to fix (dis)connectNotify() not getting called
for QML signal handlers and bindings.

Change-Id: I5cfc126a5562a20031d3af8415c60d101603dd8d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
src/corelib/kernel/qobject_p.h

index 446e920..02580ca 100644 (file)
@@ -193,6 +193,11 @@ public:
     int signalIndex(const char *signalName, const QMetaObject **meta = 0) const;
     inline bool isSignalConnected(uint signalIdx) const;
 
+    // To allow abitrary objects to call connectNotify()/disconnectNotify() without making
+    // the API public in QObject. This is used by QQmlNotifierEndpoint.
+    inline void connectNotify(const QMetaMethod &signal);
+    inline void disconnectNotify(const QMetaMethod &signal);
+
 public:
     ExtraData *extraData;    // extra data set by the user
     QThreadData *threadData; // id of the thread that owns the object
@@ -252,6 +257,16 @@ inline void QObjectPrivate::resetCurrentSender(QObject *receiver,
         previousSender->ref = currentSender->ref;
 }
 
+inline void QObjectPrivate::connectNotify(const QMetaMethod &signal)
+{
+    q_ptr->connectNotify(signal);
+}
+
+inline void QObjectPrivate::disconnectNotify(const QMetaMethod &signal)
+{
+    q_ptr->disconnectNotify(signal);
+}
+
 
 Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE);
 Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE);