diff options
Diffstat (limited to 'src/qml/qml/qqmltypenamecache.cpp')
-rw-r--r-- | src/qml/qml/qqmltypenamecache.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/qml/qml/qqmltypenamecache.cpp b/src/qml/qml/qqmltypenamecache.cpp index 38466aa20d..87764c49ae 100644 --- a/src/qml/qml/qqmltypenamecache.cpp +++ b/src/qml/qml/qqmltypenamecache.cpp @@ -53,6 +53,21 @@ QQmlTypeNameCache::~QQmlTypeNameCache() { } +void QQmlTypeNameCache::add(const QHashedString &name, const QUrl &url, const QHashedString &nameSpace) +{ + if (nameSpace.length() != 0) { + Import *i = m_namedImports.value(nameSpace); + Q_ASSERT(i != 0); + i->compositeSingletons.insert(name, url); + return; + } + + if (m_anonymousCompositeSingletons.contains(name)) + return; + + m_anonymousCompositeSingletons.insert(name, url); +} + void QQmlTypeNameCache::add(const QHashedString &name, int importedScriptIndex, const QHashedString &nameSpace) { Import import; @@ -78,6 +93,9 @@ QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QHashedStringRef &name) if (!result.isValid()) result = typeSearch(m_anonymousImports, name); + if (!result.isValid()) + result = query(m_anonymousCompositeSingletons, name); + return result; } @@ -88,7 +106,12 @@ QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QHashedStringRef &name, const Import *i = static_cast<const Import *>(importNamespace); Q_ASSERT(i->scriptIndex == -1); - return typeSearch(i->modules, name); + Result result = result = typeSearch(i->modules, name); + + if (!result.isValid()) + result = query(i->compositeSingletons, name); + + return result; } QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QV4::String *name) @@ -98,6 +121,9 @@ QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QV4::String *name) if (!result.isValid()) result = typeSearch(m_anonymousImports, name); + if (!result.isValid()) + result = query(m_anonymousCompositeSingletons, name); + return result; } @@ -114,7 +140,12 @@ QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QV4::String *name, cons return r; } - return typeSearch(i->modules, name); + Result r = typeSearch(i->modules, name); + + if (!r.isValid()) + r = query(i->compositeSingletons, name); + + return r; } QT_END_NAMESPACE |