From 7fe26e119685dfc694dcf5bd1dceeeb1226f3dfd Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 20 Oct 2009 14:34:14 +1000 Subject: Don't search non-local context types --- src/declarative/qml/qmlcontextscriptclass.cpp | 9 ++++++--- src/declarative/qml/qmlcontextscriptclass_p.h | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/declarative/qml/qmlcontextscriptclass.cpp b/src/declarative/qml/qmlcontextscriptclass.cpp index ae86fb1..4df23f0 100644 --- a/src/declarative/qml/qmlcontextscriptclass.cpp +++ b/src/declarative/qml/qmlcontextscriptclass.cpp @@ -99,10 +99,12 @@ QmlContextScriptClass::queryProperty(Object *object, const Identifier &name, if (!bindContext) return 0; + bool includeTypes = true; while (bindContext) { QScriptClass::QueryFlags rv = - queryProperty(bindContext, scopeObject, name, flags); + queryProperty(bindContext, scopeObject, name, flags, includeTypes); scopeObject = 0; // Only applies to the first context + includeTypes = false; // Only applies to the first context if (rv) return rv; bindContext = bindContext->parentContext(); } @@ -113,7 +115,8 @@ QmlContextScriptClass::queryProperty(Object *object, const Identifier &name, QScriptClass::QueryFlags QmlContextScriptClass::queryProperty(QmlContext *bindContext, QObject *scopeObject, const Identifier &name, - QScriptClass::QueryFlags flags) + QScriptClass::QueryFlags flags, + bool includeTypes) { QmlEnginePrivate *ep = QmlEnginePrivate::get(engine); QmlContextPrivate *cp = QmlContextPrivate::get(bindContext); @@ -124,7 +127,7 @@ QmlContextScriptClass::queryProperty(QmlContext *bindContext, QObject *scopeObje return QScriptClass::HandlesReadAccess; } - if (cp->imports) { + if (includeTypes && cp->imports) { QmlTypeNameCache::Data *data = cp->imports->data(name); if (data) { diff --git a/src/declarative/qml/qmlcontextscriptclass_p.h b/src/declarative/qml/qmlcontextscriptclass_p.h index 126c8fe..95dff5b 100644 --- a/src/declarative/qml/qmlcontextscriptclass_p.h +++ b/src/declarative/qml/qmlcontextscriptclass_p.h @@ -80,7 +80,8 @@ protected: private: QScriptClass::QueryFlags queryProperty(QmlContext *, QObject *scopeObject, const Identifier &, - QScriptClass::QueryFlags flags); + QScriptClass::QueryFlags flags, + bool includeTypes); QmlEngine *engine; -- cgit v0.12