aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlcontextdata.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-06-15 17:52:07 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-06-16 12:24:15 +0200
commit1061e74206592ec1791cadf47e66cf323f525ea4 (patch)
tree2b83c97a04470b44992b5c58f9f3dfa259e58918 /src/qml/qml/qqmlcontextdata.cpp
parent0d43e21429ee23442ec3a99f641a5665d66e75e2 (diff)
Make QQmlContext::resolveUrl() const
It doesn't modify anything. Change-Id: If289873415eb5a0483ca49b34abfac6be9a9e2e5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlcontextdata.cpp')
-rw-r--r--src/qml/qml/qqmlcontextdata.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/qml/qml/qqmlcontextdata.cpp b/src/qml/qml/qqmlcontextdata.cpp
index d9aea9b917..e1aa3dd887 100644
--- a/src/qml/qml/qqmlcontextdata.cpp
+++ b/src/qml/qml/qqmlcontextdata.cpp
@@ -46,22 +46,25 @@
QT_BEGIN_NAMESPACE
-QUrl QQmlContextData::resolvedUrl(const QUrl &src)
+QUrl QQmlContextData::resolvedUrl(const QUrl &src) const
{
QUrl resolved;
if (src.isRelative() && !src.isEmpty()) {
- QQmlRefPointer<QQmlContextData> ctxt = this;
- do {
- if (ctxt->url().isValid())
- break;
- else
- ctxt = ctxt->parent();
- } while (ctxt);
-
- if (ctxt)
- resolved = ctxt->url().resolved(src);
- else if (m_engine)
- resolved = m_engine->baseUrl().resolved(src);
+ const QUrl ownUrl = url();
+ if (ownUrl.isValid()) {
+ resolved = ownUrl.resolved(src);
+ } else {
+ for (QQmlRefPointer<QQmlContextData> ctxt = parent(); ctxt; ctxt = ctxt->parent()) {
+ const QUrl ctxtUrl = ctxt->url();
+ if (ctxtUrl.isValid()) {
+ resolved = ctxtUrl.resolved(src);
+ break;
+ }
+ }
+
+ if (m_engine && resolved.isEmpty())
+ resolved = m_engine->baseUrl().resolved(src);
+ }
} else {
resolved = src;
}