summaryrefslogtreecommitdiffstats
path: root/src/script/qscriptengine_p.cpp
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-06-25 15:25:48 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-06-25 15:32:13 (GMT)
commit47c9e7b1b3551ff6dbe71590461a45ae398a9501 (patch)
treef965ed1cb23bbdb2116dfba945e44b1d2dfc2532 /src/script/qscriptengine_p.cpp
parent3984253ac58e0cca1c0b94fad1549dd4e0e3c2e1 (diff)
downloadQt-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.cpp15
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,