diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-25 17:05:57 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-26 07:34:19 +0000 |
commit | 86f546dc658106eab9ef489b5473a5407ff8c3c0 (patch) | |
tree | ed473cb9f016d9716b3bc38a93d30787d33d3351 /src/quickcontrols2/qquickiconimage.cpp | |
parent | 8b9f4364ba05c51ba4a0d8edcd53ea411824a590 (diff) |
QQuickIconImage: fix file selectors for named theme icons
QQuickIconImage needs to be associated with a QML context to be able
to call QQmlContext::resolvedUrl(), which in turn passes it to the URL
interceptor aka. QQmlFileSelector.
Change-Id: Iff34fb8316c765ac0ff04d5d7a6ab23002b31385
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quickcontrols2/qquickiconimage.cpp')
-rw-r--r-- | src/quickcontrols2/qquickiconimage.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/quickcontrols2/qquickiconimage.cpp b/src/quickcontrols2/qquickiconimage.cpp index d392b72a..629fc0cb 100644 --- a/src/quickcontrols2/qquickiconimage.cpp +++ b/src/quickcontrols2/qquickiconimage.cpp @@ -80,8 +80,16 @@ void QQuickIconImagePrivate::updateIcon() const qreal dpr = calculateDevicePixelRatio(); const QIconLoaderEngineEntry *entry = QIconLoaderEngine::entryForSize(icon, size * dpr, qCeil(dpr)); - url = entry ? QUrl::fromLocalFile(entry->filename) : source; - isThemeIcon = entry != nullptr; + + if (entry) { + QQmlContext *context = qmlContext(q); + const QUrl entryUrl = QUrl::fromLocalFile(entry->filename); + url = context ? context->resolvedUrl(entryUrl) : entryUrl; + isThemeIcon = true; + } else { + url = source; + isThemeIcon = false; + } q->load(); updatingIcon = false; |