From 71338b4b2f01268759f7ac6b3eff5abb17420a7c Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 25 Oct 2013 14:23:39 +0200 Subject: Resolve member expressions of QObject members ...when the base is a QObject property itself or an ID referenced object. This patch resolves for example the width property in a parent.width expression to be a per-index lookup at run-time. That requires the base ("parent") however to be a final property or come from an object where expected revision is known, i.e. a QML imported object (scope or context). Change-Id: Iaa1f57ace452da5e059c1d4e63b52b316e1a6b08 Reviewed-by: Lars Knoll --- src/qml/qml/qqmltypeloader.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/qml/qml/qqmltypeloader.cpp') diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index b3bc5eb4a1..8d9c4ef2fe 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -2307,6 +2307,7 @@ void QQmlTypeData::compile() m_compiledData->importCache->addref(); QQmlEngine *engine = typeLoader()->engine(); + QQmlEnginePrivate *enginePrivate = QQmlEnginePrivate::get(engine); for (QHash::ConstIterator resolvedType = m_resolvedTypes.constBegin(), end = m_resolvedTypes.constEnd(); resolvedType != end; ++resolvedType) { @@ -2357,7 +2358,7 @@ void QQmlTypeData::compile() // Compile JS binding expressions and signal handlers - JSCodeGen jsCodeGen(finalUrlString(), parsedQML->code, &parsedQML->jsModule, &parsedQML->jsParserEngine, parsedQML->program, m_compiledData->importCache); + JSCodeGen jsCodeGen(enginePrivate, finalUrlString(), parsedQML->code, &parsedQML->jsModule, &parsedQML->jsParserEngine, parsedQML->program, m_compiledData->importCache); const QVector runtimeFunctionIndices = jsCodeGen.generateJSCodeForFunctionsAndBindings(parsedQML->functions); QV4::ExecutionEngine *v4 = QV8Engine::getV4(m_typeLoader->engine()); @@ -2389,7 +2390,7 @@ void QQmlTypeData::compile() m_compiledData->datas.reserve(qmlUnit->nObjects); m_compiledData->propertyCaches.reserve(qmlUnit->nObjects); - QQmlPropertyCacheCreator propertyCacheBuilder(QQmlEnginePrivate::get(m_typeLoader->engine()), + QQmlPropertyCacheCreator propertyCacheBuilder(enginePrivate, qmlUnit, m_compiledData->url, &m_imports, &m_compiledData->resolvedTypes); -- cgit v1.2.3