From 8cf9811ec378b9903e3f64d027f625d9ab0ac7db Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 22 Jan 2014 11:01:14 +0100 Subject: [PATCH] Do not overwrite basePixmap of QIconLoader PixmapEntry Change-Id: I4799af1d9151ba4b0952369e9620d2fab2b002d9 Reviewed-by: David Sansome Reviewed-by: Jens Bache-Wiig --- src/gui/image/qiconloader.cpp | 7 ++++--- tests/auto/gui/image/qicon/tst_qicon.cpp | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp index d202d62957..9e979023cd 100644 --- a/src/gui/image/qiconloader.cpp +++ b/src/gui/image/qiconloader.cpp @@ -519,10 +519,11 @@ QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State st return cachedPixmap; } else { if (basePixmap.size() != actualSize) - basePixmap = basePixmap.scaled(actualSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - cachedPixmap = basePixmap; + cachedPixmap = basePixmap.scaled(actualSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + else + cachedPixmap = basePixmap; if (QGuiApplication *guiApp = qobject_cast(qApp)) - cachedPixmap = static_cast(QObjectPrivate::get(guiApp))->applyQIconStyleHelper(mode, basePixmap); + cachedPixmap = static_cast(QObjectPrivate::get(guiApp))->applyQIconStyleHelper(mode, cachedPixmap); QPixmapCache::insert(key, cachedPixmap); } return cachedPixmap; diff --git a/tests/auto/gui/image/qicon/tst_qicon.cpp b/tests/auto/gui/image/qicon/tst_qicon.cpp index 2ce6fc5058..bfe2fbc9f7 100644 --- a/tests/auto/gui/image/qicon/tst_qicon.cpp +++ b/tests/auto/gui/image/qicon/tst_qicon.cpp @@ -594,7 +594,9 @@ void tst_QIcon::fromTheme() QCOMPARE(appointmentIcon.pixmap(22).size(), QSize(22, 22)); // exact QCOMPARE(appointmentIcon.pixmap(32).size(), QSize(32, 32)); // exact QCOMPARE(appointmentIcon.pixmap(48).size(), QSize(32, 32)); // smaller + QCOMPARE(appointmentIcon.pixmap(16).size(), QSize(16, 16)); // scaled down QCOMPARE(appointmentIcon.pixmap(8).size(), QSize(8, 8)); // scaled down + QCOMPARE(appointmentIcon.pixmap(16).size(), QSize(16, 16)); // scaled down QByteArray ba; // write to QByteArray