aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2/qquickiconimage.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-25 17:05:57 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-26 07:34:19 +0000
commit86f546dc658106eab9ef489b5473a5407ff8c3c0 (patch)
treeed473cb9f016d9716b3bc38a93d30787d33d3351 /src/quickcontrols2/qquickiconimage.cpp
parent8b9f4364ba05c51ba4a0d8edcd53ea411824a590 (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.cpp12
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;