summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-03-13 11:34:48 +0100
committerGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-03-14 00:50:37 +0000
commitd09f81864e989b739d504e97bfc6b4a367bdfb22 (patch)
treed3f23087d60de289621223fafebe6db31fc4014d
parent6c372d46f86747aa75b2bcb9bd953c6e18d673d8 (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.cpp11
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));
}