diff options
author | Kent Hansen <khansen@trolltech.com> | 2009-06-25 15:25:48 (GMT) |
---|---|---|
committer | Kent Hansen <khansen@trolltech.com> | 2009-06-25 15:32:13 (GMT) |
commit | 47c9e7b1b3551ff6dbe71590461a45ae398a9501 (patch) | |
tree | f965ed1cb23bbdb2116dfba945e44b1d2dfc2532 /src/script/qscriptengine_p.cpp | |
parent | 3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1 (diff) | |
download | Qt-47c9e7b1b3551ff6dbe71590461a45ae398a9501.zip Qt-47c9e7b1b3551ff6dbe71590461a45ae398a9501.tar.gz Qt-47c9e7b1b3551ff6dbe71590461a45ae398a9501.tar.bz2 |
make it possible to support queued connections in qtscript
This change doesn't actually add public API for it, but makes it
trivial to add.
On the C++ side, qScriptConnect() would get an overload that
takes an additional argument, the connection type (d'oh, it
should have had a default argument to begin with!).
On the script side, it's a bit more tricky to "overload" the
existing connect(), since it's already "overloaded" (can have
either one or two parameters). Plus, I'd like connect() to be
able to support bind-like functionality so you can pass
additional arguments to it that will be passed to the signal
handler at signal emission time. Oh well, we'll see.
Diffstat (limited to 'src/script/qscriptengine_p.cpp')
-rw-r--r-- | src/script/qscriptengine_p.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/script/qscriptengine_p.cpp b/src/script/qscriptengine_p.cpp index 0a238bc..ffb5a27 100644 --- a/src/script/qscriptengine_p.cpp +++ b/src/script/qscriptengine_p.cpp @@ -2312,7 +2312,8 @@ void QScriptEnginePrivate::deletePendingQObjects() bool QScriptEnginePrivate::scriptConnect(QObject *sender, const char *signal, const QScriptValueImpl &receiver, - const QScriptValueImpl &function) + const QScriptValueImpl &function, + Qt::ConnectionType type) { Q_ASSERT(sender); Q_ASSERT(signal); @@ -2320,7 +2321,7 @@ bool QScriptEnginePrivate::scriptConnect(QObject *sender, const char *signal, int index = meta->indexOfSignal(QMetaObject::normalizedSignature(signal+1)); if (index == -1) return false; - return scriptConnect(sender, index, receiver, function); + return scriptConnect(sender, index, receiver, function, /*wrapper=*/QScriptValueImpl(), type); } bool QScriptEnginePrivate::scriptDisconnect(QObject *sender, const char *signal, @@ -2339,10 +2340,11 @@ bool QScriptEnginePrivate::scriptDisconnect(QObject *sender, const char *signal, bool QScriptEnginePrivate::scriptConnect(QObject *sender, int signalIndex, const QScriptValueImpl &receiver, const QScriptValueImpl &function, - const QScriptValueImpl &senderWrapper) + const QScriptValueImpl &senderWrapper, + Qt::ConnectionType type) { QScriptQObjectData *data = qobjectData(sender); - return data->addSignalHandler(sender, signalIndex, receiver, function, senderWrapper); + return data->addSignalHandler(sender, signalIndex, receiver, function, senderWrapper, type); } bool QScriptEnginePrivate::scriptDisconnect(QObject *sender, int signalIndex, @@ -2357,11 +2359,12 @@ bool QScriptEnginePrivate::scriptDisconnect(QObject *sender, int signalIndex, bool QScriptEnginePrivate::scriptConnect(const QScriptValueImpl &signal, const QScriptValueImpl &receiver, - const QScriptValueImpl &function) + const QScriptValueImpl &function, + Qt::ConnectionType type) { QScript::QtFunction *fun = static_cast<QScript::QtFunction*>(signal.toFunction()); int index = fun->mostGeneralMethod(); - return scriptConnect(fun->qobject(), index, receiver, function, fun->object()); + return scriptConnect(fun->qobject(), index, receiver, function, fun->object(), type); } bool QScriptEnginePrivate::scriptDisconnect(const QScriptValueImpl &signal, |