summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlcontext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qmlcontext.cpp')
-rw-r--r--src/declarative/qml/qmlcontext.cpp31
1 files changed, 8 insertions, 23 deletions
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index f6795aa..43a4741 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -61,8 +61,11 @@ QmlContextPrivate::QmlContextPrivate()
{
}
-void QmlContextPrivate::addScript(const QString &script, QObject *scopeObject)
+void QmlContextPrivate::addScript(const QString &script, QObject *scopeObject,
+ const QString &fileName, int lineNumber)
{
+ Q_Q(QmlContext);
+
if (!engine)
return;
@@ -70,29 +73,15 @@ void QmlContextPrivate::addScript(const QString &script, QObject *scopeObject)
QScriptEngine *scriptEngine = QmlEnginePrivate::getScriptEngine(engine);
QScriptContext *scriptContext = scriptEngine->pushCleanContext();
- scriptContext->pushScope(scriptValue);
+ scriptContext->pushScope(enginePriv->contextClass->newContext(q, scopeObject));
- if (scopeObject)
- scriptContext->pushScope(enginePriv->objectClass->newQObject(scopeObject));
-
QScriptValue scope = scriptEngine->newObject();
scriptContext->setActivationObject(scope);
- QScriptValue val = scriptEngine->evaluate(script);
+ QScriptValue val = scriptEngine->evaluate(script, fileName, lineNumber);
- if (scriptEngine->hasUncaughtException()) {
- if (scriptEngine->uncaughtException().isError()){
- QScriptValue exception = scriptEngine->uncaughtException();
- if (!exception.property(QLatin1String("fileName")).toString().isEmpty()){
- qWarning() << exception.property(QLatin1String("fileName")).toString()
- << scriptEngine->uncaughtExceptionLineNumber()
- << exception.toString();
-
- } else {
- qmlInfo(scopeObject) << exception.toString();
- }
- }
- }
+ if (scriptEngine->hasUncaughtException())
+ QmlExpressionPrivate::printException(scriptEngine);
scriptEngine->popContext();
@@ -139,10 +128,6 @@ void QmlContextPrivate::init()
if (parent)
parent->d_func()->childContexts.insert(q);
-
- //set scope chain
- QScriptEngine *scriptEngine = QmlEnginePrivate::getScriptEngine(engine);
- scriptValue = QmlEnginePrivate::get(engine)->contextClass->newContext(q);
}
void QmlContextPrivate::addDefaultObject(QObject *object, Priority priority)