aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltypenamecache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmltypenamecache.cpp')
-rw-r--r--src/qml/qml/qqmltypenamecache.cpp35
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