From 5b44f14b564bb6a4ba94d49593a0557995acc79b Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Mon, 26 Oct 2009 14:42:45 +1000 Subject: Move knowledge of qmldir out of QmlScriptParser. --- src/declarative/qml/qmlcompositetypemanager.cpp | 14 +++++++++++--- src/declarative/qml/qmlscriptparser.cpp | 3 --- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/declarative/qml/qmlcompositetypemanager.cpp b/src/declarative/qml/qmlcompositetypemanager.cpp index 9444a22..b956c1e 100644 --- a/src/declarative/qml/qmlcompositetypemanager.cpp +++ b/src/declarative/qml/qmlcompositetypemanager.cpp @@ -575,6 +575,17 @@ void QmlCompositeTypeManager::compile(QmlCompositeTypeData *unit) int waiting = 0; QList resourceList = unit->data.referencedResources(); + + foreach (QmlScriptParser::Import imp, unit->data.imports()) { + if (imp.type == QmlScriptParser::Import::File) { + QUrl importUrl = unit->imports.baseUrl().resolved(QUrl(imp.uri + QLatin1String("/qmldir"))); + if (toLocalFileOrQrc(importUrl).isEmpty()) { + // Import requires remote qmldir + resourceList.prepend(importUrl); + } + } + } + for (int ii = 0; ii < resourceList.count(); ++ii) { QUrl url = unit->imports.baseUrl().resolved(resourceList.at(ii)); @@ -589,9 +600,6 @@ void QmlCompositeTypeManager::compile(QmlCompositeTypeData *unit) loadResource(resource); } - if (!url.toLocalFile().isEmpty() && url.path().endsWith("/qmldir") && resource->status==QmlCompositeTypeResource::Error) - continue; // ignore - can use filesystem dir instead - switch(resource->status) { case QmlCompositeTypeResource::Invalid: case QmlCompositeTypeResource::Error: diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index b61ffaa..fb84651 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -424,9 +424,6 @@ bool ProcessAST::visit(AST::UiImport *node) if (node->fileName) { import.type = QmlScriptParser::Import::File; uri = node->fileName->asString(); - QUrl ref(uri); - ref.setPath(ref.path()+QLatin1String("/qmldir")); - _parser->_refUrls << ref; } else { import.type = QmlScriptParser::Import::Library; uri = asString(node->importUri); -- cgit v0.12