From: Alex Montgomery Date: Fri, 15 Aug 2014 16:41:56 +0000 (-0700) Subject: Fix setContextObject to re-evaluate bindings X-Git-Tag: v5.3.99+beta1~144 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=672c533bde2899baad3eb29b6a807870abb8bf25;p=platform%2Fupstream%2Fqtdeclarative.git Fix setContextObject to re-evaluate bindings Fix QQmlContext::setContextObject to reevaluate bindings as the documentation says that it should. Task-number: QTBUG-40798 Change-Id: Ifbd97c7a07a5432f4948937da863370b05705206 Reviewed-by: Simon Hausmann --- diff --git a/src/qml/qml/qqmlcontext.cpp b/src/qml/qml/qqmlcontext.cpp index 7b1ba46..0a550f5 100644 --- a/src/qml/qml/qqmlcontext.cpp +++ b/src/qml/qml/qqmlcontext.cpp @@ -280,6 +280,7 @@ void QQmlContext::setContextObject(QObject *object) } data->contextObject = object; + data->refreshExpressions(); } /*! diff --git a/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp b/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp index 1478871..e9c031a 100644 --- a/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp +++ b/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp @@ -401,6 +401,18 @@ void tst_qqmlcontext::setContextObject() delete obj; } + + // Change of context object + ctxt.setContextProperty("c", QVariant(30)); + TestObject to2; + to2.setA(10); + to2.setB(20); + to2.setC(40); + ctxt.setContextObject(&to2); + + TEST_CONTEXT_PROPERTY(&ctxt, a, QVariant(10)); + TEST_CONTEXT_PROPERTY(&ctxt, b, QVariant(20)); + TEST_CONTEXT_PROPERTY(&ctxt, c, QVariant(30)); } void tst_qqmlcontext::destruction()