Do not overwrite basePixmap of QIconLoader PixmapEntry

Change-Id: I4799af1d9151ba4b0952369e9620d2fab2b002d9
Reviewed-by: David Sansome <me@davidsansome.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
This commit is contained in:
Albert Astals Cid 2014-01-22 11:01:14 +01:00 committed by The Qt Project
parent 0b250dd628
commit 8cf9811ec3
2 changed files with 6 additions and 3 deletions

View File

@ -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<QGuiApplication *>(qApp))
cachedPixmap = static_cast<QGuiApplicationPrivate*>(QObjectPrivate::get(guiApp))->applyQIconStyleHelper(mode, basePixmap);
cachedPixmap = static_cast<QGuiApplicationPrivate*>(QObjectPrivate::get(guiApp))->applyQIconStyleHelper(mode, cachedPixmap);
QPixmapCache::insert(key, cachedPixmap);
}
return cachedPixmap;

View File

@ -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