diff options
Diffstat (limited to 'src/lib/corelib/language/scriptengine.cpp')
-rw-r--r-- | src/lib/corelib/language/scriptengine.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/corelib/language/scriptengine.cpp b/src/lib/corelib/language/scriptengine.cpp index bbc84d580..7aa6138dd 100644 --- a/src/lib/corelib/language/scriptengine.cpp +++ b/src/lib/corelib/language/scriptengine.cpp @@ -79,6 +79,8 @@ uint qHash(const ScriptEngine::PropertyCacheKey &k, uint seed = 0) ScriptEngine::ScriptEngine(const Logger &logger, QObject *parent) : QScriptEngine(parent), m_logger(logger) { + setProcessEventsInterval(1000); // For the cancelation mechanism to work. + m_cancelationError = currentContext()->throwValue(tr("Execution canceled")); QScriptValue objectProto = globalObject().property(QLatin1String("Object")); m_definePropertyFunction = objectProto.property(QLatin1String("defineProperty")); QBS_ASSERT(m_definePropertyFunction.isFunction(), /* ignore */); @@ -457,6 +459,16 @@ QScriptValueList ScriptEngine::argumentList(const QStringList &argumentNames, return result; } +void ScriptEngine::cancel() +{ + QMetaObject::invokeMethod(this, "abort", Qt::QueuedConnection); +} + +void ScriptEngine::abort() +{ + abortEvaluation(m_cancelationError); +} + class JSTypeExtender { public: |