diff options
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 30 | ||||
-rw-r--r-- | src/corelib/kernel/qobject_p.h | 1 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index adb68f3d98..8ce5310dee 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2134,17 +2134,7 @@ QObject *QObject::sender() const int QObject::senderSignalIndex() const { Q_D(const QObject); - - QMutexLocker locker(signalSlotLock(this)); - if (!d->currentSender) - return -1; - - for (QObjectPrivate::Connection *c = d->senders; c; c = c->next) { - if (c->sender == d->currentSender->sender) - return d->currentSender->signal; - } - - return -1; + return d->senderSignalIndex(); } /*! @@ -3471,6 +3461,24 @@ void QMetaObject::activate(QObject *sender, int signal_index, void **argv) } /*! \internal + Implementation of QObject::senderSignalIndex() +*/ +int QObjectPrivate::senderSignalIndex() const +{ + Q_Q(const QObject); + QMutexLocker locker(signalSlotLock(q)); + if (!currentSender) + return -1; + + for (QObjectPrivate::Connection *c = senders; c; c = c->next) { + if (c->sender == currentSender->sender) + return currentSender->signal; + } + + return -1; +} + +/*! \internal Returns the signal index used in the internal connectionLists vector. It is different from QMetaObject::indexOfSignal(): indexOfSignal is the same as indexOfMethod diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h index aa6b467fd6..84e2ecd779 100644 --- a/src/corelib/kernel/qobject_p.h +++ b/src/corelib/kernel/qobject_p.h @@ -187,6 +187,7 @@ public: return o->d_func(); } + int senderSignalIndex() const; int signalIndex(const char *signalName, const QMetaObject **meta = 0) const; inline bool isSignalConnected(uint signalIdx) const; |