diff options
-rw-r--r-- | src/declarative/qml/qmlbasicscript.cpp | 12 | ||||
-rw-r--r-- | src/declarative/qml/qmlbasicscript_p.h | 2 | ||||
-rw-r--r-- | src/declarative/qml/qmlexpression.cpp | 7 |
3 files changed, 7 insertions, 14 deletions
diff --git a/src/declarative/qml/qmlbasicscript.cpp b/src/declarative/qml/qmlbasicscript.cpp index 5800f71..21860a5 100644 --- a/src/declarative/qml/qmlbasicscript.cpp +++ b/src/declarative/qml/qmlbasicscript.cpp @@ -616,7 +616,7 @@ bool QmlBasicScriptCompiler::compileBinaryExpression(AST::Node *node) /*! Run the script in \a context and return the result. */ -QVariant QmlBasicScript::run(QmlContext *context) +QVariant QmlBasicScript::run(QmlContext *context, QObject *me) { if (!isValid()) return QVariant(); @@ -640,18 +640,16 @@ QVariant QmlBasicScript::run(QmlContext *context) case ScriptInstruction::FetchContextConstant: { - QObject *obj = contextPrivate->defaultObjects.at(0); - - stack.push(fetch_value(obj, instr.constant.idx, instr.constant.type)); - if (obj && instr.constant.notify != 0) + stack.push(fetch_value(me, instr.constant.idx, instr.constant.type)); + if (me && instr.constant.notify != 0) enginePrivate->capturedProperties << - QmlEnginePrivate::CapturedProperty(obj, instr.constant.idx, instr.constant.notify); + QmlEnginePrivate::CapturedProperty(me, instr.constant.idx, instr.constant.notify); } break; case ScriptInstruction::FetchRootConstant: { - QObject *obj = contextPrivate->defaultObjects.at(1); + QObject *obj = contextPrivate->defaultObjects.at(0); stack.push(fetch_value(obj, instr.constant.idx, instr.constant.type)); if (obj && instr.constant.notify != 0) diff --git a/src/declarative/qml/qmlbasicscript_p.h b/src/declarative/qml/qmlbasicscript_p.h index 152dbe5c..92d58f9 100644 --- a/src/declarative/qml/qmlbasicscript_p.h +++ b/src/declarative/qml/qmlbasicscript_p.h @@ -96,7 +96,7 @@ public: void dump(); - QVariant run(QmlContext *); + QVariant run(QmlContext *, QObject *); private: int flags; diff --git a/src/declarative/qml/qmlexpression.cpp b/src/declarative/qml/qmlexpression.cpp index da8b59f..6e9a7a1 100644 --- a/src/declarative/qml/qmlexpression.cpp +++ b/src/declarative/qml/qmlexpression.cpp @@ -231,13 +231,8 @@ QVariant QmlExpressionPrivate::evalSSE() #endif QmlContextPrivate *ctxtPriv = ctxt->d_func(); - if (me) - ctxtPriv->defaultObjects.insert(ctxtPriv->highPriorityCount , me); - - QVariant rv = sse.run(ctxt); - if (me) - ctxtPriv->defaultObjects.removeAt(ctxtPriv->highPriorityCount); + QVariant rv = sse.run(ctxt, me); return rv; } |