summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2012-05-17 11:08:48 +0100
committerQt by Nokia <qt-info@nokia.com>2012-05-18 10:37:41 +0200
commita605d25ae249fc416f321ec1264b7aa33e15c46f (patch)
treeeb4811eb4ba03a99d4a02203fa660b7155f7b7ea /src/corelib/kernel
parenta5972f8ec32631e70578c64e9d6c063b3c47f0f5 (diff)
QMetaObject::activate() overload that doesn't require a metaobject
This allows QML to emit signals without having to built lazily created metaobjects. Change-Id: If8068fb3cb35d79dc8f3ef79253d9c2eb7c93205 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qobject.cpp7
-rw-r--r--src/corelib/kernel/qobjectdefs.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index ca103f0f3e..02a80a9783 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3293,7 +3293,14 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign
int signalOffset;
int methodOffset;
computeOffsets(m, &signalOffset, &methodOffset);
+ activate(sender, methodOffset, signalOffset, local_signal_index, argv);
+}
+/*!\internal
+ */
+void QMetaObject::activate(QObject *sender, int methodOffset, int signalOffset, int local_signal_index,
+ void **argv)
+{
int signal_index = signalOffset + local_signal_index;
if (sender->d_func()->declarativeData && QAbstractDeclarativeData::signalEmitted)
diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h
index 567157b03d..66c19fc428 100644
--- a/src/corelib/kernel/qobjectdefs.h
+++ b/src/corelib/kernel/qobjectdefs.h
@@ -356,6 +356,7 @@ struct Q_CORE_EXPORT QMetaObject
// internal index-based signal activation
static void activate(QObject *sender, int signal_index, void **argv);
static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv);
+ static void activate(QObject *sender, int method_offset, int signal_offset, int local_signal_index, void **argv);
static bool invokeMethod(QObject *obj, const char *member,
Qt::ConnectionType,