summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qobject.cpp30
-rw-r--r--src/corelib/kernel/qobject_p.h1
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;