From: Aaron McCarthy Date: Fri, 2 Dec 2011 03:35:07 +0000 (+1000) Subject: Fix loading imports from Qt resource. X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=18d1e8c0482f70cd7b978169e7b8f7ab137bfc03;p=konrad%2Fqtdeclarative.git Fix loading imports from Qt resource. Loading an import from a Qt resource fails because the url of the module was erroneously being converted to a file:// url. This results in a url that looks like "file://:/MyModule". Fixed by adding a check to see if the module path is a resource path (starts with :) and if so constructs a qrc:// url instead. Change-Id: I41a24a93d085baaf68d58c4e991d6ba2aff5e7ff Reviewed-by: Martin Jones --- diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp index 0a03443..cddebcd 100644 --- a/src/declarative/qml/qdeclarativeimport.cpp +++ b/src/declarative/qml/qdeclarativeimport.cpp @@ -480,7 +480,11 @@ bool QDeclarativeImportsPrivate::add(const QDeclarativeDirComponents &qmldircomp if (fi.isFile()) { found = true; - url = QUrl::fromLocalFile(fi.absolutePath()).toString(); + const QString absolutePath = fi.absolutePath(); + if (absolutePath.at(0) == QLatin1Char(':')) + url = QLatin1String("qrc://") + absolutePath.mid(1); + else + url = QUrl::fromLocalFile(fi.absolutePath()).toString(); uri = resolvedUri(dir, database); if (!importExtension(absoluteFilePath, uri, database, &qmldircomponents, errors)) return false; @@ -498,7 +502,11 @@ bool QDeclarativeImportsPrivate::add(const QDeclarativeDirComponents &qmldircomp if (fi.isFile()) { found = true; - url = QUrl::fromLocalFile(fi.absolutePath()).toString(); + const QString absolutePath = fi.absolutePath(); + if (absolutePath.at(0) == QLatin1Char(':')) + url = QLatin1String("qrc://") + absolutePath.mid(1); + else + url = QUrl::fromLocalFile(fi.absolutePath()).toString(); uri = resolvedUri(dir, database); if (!importExtension(absoluteFilePath, uri, database, &qmldircomponents, errors)) return false; @@ -517,7 +525,10 @@ bool QDeclarativeImportsPrivate::add(const QDeclarativeDirComponents &qmldircomp if (!absoluteFilePath.isEmpty()) { found = true; QString absolutePath = absoluteFilePath.left(absoluteFilePath.lastIndexOf(Slash)+1); - url = QLatin1String("file://") + absolutePath; + if (absolutePath.at(0) == QLatin1Char(':')) + url = QLatin1String("qrc://") + absolutePath.mid(1); + else + url = QLatin1String("file://") + absolutePath; uri = resolvedUri(dir, database); if (!importExtension(absoluteFilePath, uri, database, &qmldircomponents, errors)) return false;