diff options
author | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-03-13 11:34:48 +0100 |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-03-14 00:50:37 +0000 |
commit | d09f81864e989b739d504e97bfc6b4a367bdfb22 (patch) | |
tree | d3f23087d60de289621223fafebe6db31fc4014d | |
parent | 6c372d46f86747aa75b2bcb9bd953c6e18d673d8 (diff) |
Don't use QFileIconEngine if the platform theme won't support it
Change-Id: I6ccbfc5e8bc25018231a6924be12d74955e12337
Task-number: QTBUG-44981
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
-rw-r--r-- | src/widgets/itemviews/qfileiconprovider.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp index 740bd853b7..50ca733991 100644 --- a/src/widgets/itemviews/qfileiconprovider.cpp +++ b/src/widgets/itemviews/qfileiconprovider.cpp @@ -126,6 +126,9 @@ public: QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE { const QList<QSize> &sizes = availableSizes(mode, state); + if (sizes.isEmpty()) + return QSize(); + foreach (const QSize &availableSize, sizes) { if (availableSize.width() >= size.width()) return availableSize; @@ -321,6 +324,14 @@ static bool isCacheable(const QFileInfo &fi) QIcon QFileIconProviderPrivate::getIcon(const QFileInfo &fi) const { + const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme(); + if (!theme) + return QIcon(); + + QList<int> sizes = theme->themeHint(QPlatformTheme::IconPixmapSizes).value<QList<int> >(); + if (sizes.isEmpty()) + return QIcon(); + Q_Q(const QFileIconProvider); return QIcon(new QFileIconEngine(q, fi)); } |