From 4a0140832de2f08c09557b7830ba6b5e25aa4c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 12 Aug 2020 15:11:30 +0200 Subject: 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 --- src/gui/image/qicon.cpp | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) (limited to 'src/gui/image/qicon.cpp') 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 QPixmapIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) +{ + QList 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(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)) -- cgit v1.2.3