diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-06-05 15:19:20 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-06-22 09:42:12 +0200 |
commit | b08b63f65267038911106ea7e0fba039e4e95151 (patch) | |
tree | bac9c01417ca0e64fb342b3f671ba6a2307ab9f8 /src/gui/image/qicon_p.h | |
parent | 37312d2950605c7044263dfc582f99679d9cfc39 (diff) |
QIcon: Prefer high-quality images of Windows .ico files.
Refactor the code QPixmapIconEngine::addFile() using a convenience
class for reading all images.
Special-case .ico-files: Read images into a list and replace by
higher-quality ones.
Task-number: QTBUG-39287
Change-Id: I32ab6c77a276dc5d4d9a8f7b216c81149b8772b8
Reviewed-by: aavit <eirik.aavitsland@digia.com>
Diffstat (limited to 'src/gui/image/qicon_p.h')
-rw-r--r-- | src/gui/image/qicon_p.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gui/image/qicon_p.h b/src/gui/image/qicon_p.h index a46cc310ad..68cd4a5452 100644 --- a/src/gui/image/qicon_p.h +++ b/src/gui/image/qicon_p.h @@ -89,6 +89,7 @@ struct QPixmapIconEngineEntry :pixmap(pm), size(pm.size()), mode(m), state(s){} QPixmapIconEngineEntry(const QString &file, const QSize &sz = QSize(), QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) :fileName(file), size(sz), mode(m), state(s){} + QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off); QPixmap pixmap; QString fileName; QSize size; @@ -97,7 +98,14 @@ struct QPixmapIconEngineEntry bool isNull() const {return (fileName.isEmpty() && pixmap.isNull()); } }; - +inline QPixmapIconEngineEntry::QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m, QIcon::State s) + : fileName(file), size(image.size()), mode(m), state(s) +{ + pixmap.convertFromImage(image); + // Reset the devicePixelRatio. The pixmap may be loaded from a @2x file, + // but be used as a 1x pixmap by QIcon. + pixmap.setDevicePixelRatio(1.0); +} class QPixmapIconEngine : public QIconEngine { public: |