summaryrefslogtreecommitdiffstats
path: root/src/gui/image/qicon.cpp
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2020-08-12 15:11:30 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2020-08-29 10:03:23 +0200
commit4a0140832de2f08c09557b7830ba6b5e25aa4c68 (patch)
tree3a187ad39ee874d628905e2ac85e40de06cd6d0e /src/gui/image/qicon.cpp
parent648610259528b6cc7ef14704af8b15bb835cce95 (diff)
QPixmapIconEngine: port to new virtual functions
Add availableSizes() override function and move the implementation out of virtual_hook(). Task-number: QTBUG-85885 Change-Id: Ida3575b25e9bca6167b5be97d6a8f0f624559602 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/gui/image/qicon.cpp')
-rw-r--r--src/gui/image/qicon.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index 27206b2cbc..0939fea296 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -365,6 +365,21 @@ QSize QPixmapIconEngine::actualSize(const QSize &size, QIcon::Mode mode, QIcon::
return actualSize;
}
+QList<QSize> QPixmapIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state)
+{
+ QList<QSize> sizes;
+ for (int i = 0; i < pixmaps.size(); ++i) {
+ QPixmapIconEngineEntry &pe = pixmaps[i];
+ if (pe.size == QSize() && pe.pixmap.isNull()) {
+ pe.pixmap = QPixmap(pe.fileName);
+ pe.size = pe.pixmap.size();
+ }
+ if (pe.mode == mode && pe.state == state && !pe.size.isEmpty())
+ sizes.push_back(pe.size);
+ }
+ return sizes;
+}
+
void QPixmapIconEngine::addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state)
{
if (!pixmap.isNull()) {
@@ -525,29 +540,6 @@ bool QPixmapIconEngine::write(QDataStream &out) const
return true;
}
-void QPixmapIconEngine::virtual_hook(int id, void *data)
-{
- switch (id) {
- case QIconEngine::AvailableSizesHook: {
- QIconEngine::AvailableSizesArgument &arg =
- *reinterpret_cast<QIconEngine::AvailableSizesArgument*>(data);
- arg.sizes.clear();
- for (int i = 0; i < pixmaps.size(); ++i) {
- QPixmapIconEngineEntry &pe = pixmaps[i];
- if (pe.size == QSize() && pe.pixmap.isNull()) {
- pe.pixmap = QPixmap(pe.fileName);
- pe.size = pe.pixmap.size();
- }
- if (pe.mode == arg.mode && pe.state == arg.state && !pe.size.isEmpty())
- arg.sizes.push_back(pe.size);
- }
- break;
- }
- default:
- QIconEngine::virtual_hook(id, data);
- }
-}
-
Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
(QIconEngineFactoryInterface_iid, QLatin1String("/iconengines"), Qt::CaseInsensitive))