diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-15 17:52:07 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-16 12:24:15 +0200 |
commit | 1061e74206592ec1791cadf47e66cf323f525ea4 (patch) | |
tree | 2b83c97a04470b44992b5c58f9f3dfa259e58918 /src/qml/qml/qqmlcontextdata.cpp | |
parent | 0d43e21429ee23442ec3a99f641a5665d66e75e2 (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.cpp | 29 |
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; } |