diff options
author | David Faure <david.faure@kdab.com> | 2016-08-01 23:44:34 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2016-08-03 18:44:59 +0000 |
commit | 580f86b8a0e43656805180bc36defb7cf1f76826 (patch) | |
tree | a2bdf91b867919c58a48a7619aea5e25ea81eaa3 /src/qml | |
parent | 9baa491a068d6cc3a0276949b538ae8f415ae1ad (diff) |
QQmlComponent: fix handling of relative paths
Calling QUrl::fromLocalFile() on a relative path leads to a non-relative
URL, as per the definition of QUrl::isRelative().
Change-Id: Ibaa9ecac56c6a14f6e41c5cf5250d7bbafed9837
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/qml/qqmlcomponent.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp index 9d56ea50de..9ea38fe528 100644 --- a/src/qml/qml/qqmlcomponent.cpp +++ b/src/qml/qml/qqmlcomponent.cpp @@ -55,6 +55,7 @@ #include <private/qv4scopedvalue_p.h> #include <private/qv4objectiterator_p.h> +#include <QDir> #include <QStack> #include <QStringList> #include <QThreadStorage> @@ -543,7 +544,8 @@ QQmlComponent::QQmlComponent(QQmlEngine *engine, const QString &fileName, { Q_D(QQmlComponent); d->engine = engine; - d->loadUrl(d->engine->baseUrl().resolved(QUrl::fromLocalFile(fileName))); + const QUrl url = QDir::isAbsolutePath(fileName) ? QUrl::fromLocalFile(fileName) : d->engine->baseUrl().resolved(QUrl(fileName)); + d->loadUrl(url); } /*! @@ -559,7 +561,8 @@ QQmlComponent::QQmlComponent(QQmlEngine *engine, const QString &fileName, { Q_D(QQmlComponent); d->engine = engine; - d->loadUrl(d->engine->baseUrl().resolved(QUrl::fromLocalFile(fileName)), mode); + const QUrl url = QDir::isAbsolutePath(fileName) ? QUrl::fromLocalFile(fileName) : d->engine->baseUrl().resolved(QUrl(fileName)); + d->loadUrl(url, mode); } /*! |