From a2c2a287e6c405200ef990f3dddae9d229aac722 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 3 Mar 2010 14:36:17 +1000 Subject: Fix incorrect scope resolution for script in a script block. Make sure global variables in a script file are searched before component properties. Task-number: QTBUG-8641 --- src/declarative/qml/qdeclarativecontext.cpp | 1 + .../declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index b244cd8..57ef90c 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -78,6 +78,7 @@ void QDeclarativeContextPrivate::addScript(const QDeclarativeParser::Object::Scr QScriptValue scope = scriptEngine->newObject(); scriptContext->setActivationObject(scope); + scriptContext->pushScope(scope); for (int ii = 0; ii < script.codes.count(); ++ii) { scriptEngine->evaluate(script.codes.at(ii), script.files.at(ii), script.lineNumbers.at(ii)); diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 8e7944d..85a3ef3 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1678,7 +1678,6 @@ void tst_qdeclarativeecmascript::scriptScope() MyQmlObject *object = qobject_cast(component.create()); QVERIFY(object != 0); emit object->basicSignal(); - QEXPECT_FAIL("", "QTBUG-8641", Continue); QCOMPARE(object->property("result").toString(), QLatin1String("world")); delete object; -- cgit v0.12