summaryrefslogtreecommitdiffstats
path: root/src/gui/image
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2020-08-11 22:35:55 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2020-08-27 22:47:33 +0200
commit462b36c3dee591bd964670dc614b995ece335331 (patch)
tree9e3de2988b07ae99f6904bf71d57f8957bff3171 /src/gui/image
parentfc4a73aa544bf03d881ddb7e2eb8ebd47d7da7b8 (diff)
QIconEngine: move away from virtual_hook usage
Upgrade existing functions to be virtual functions: - virtual QString iconName() - virtual bool isNull() - virtual QPixmap scaledPixmap(...) - virtual QList<QSize> availableSizes(...) Make all of them non-const and remove the const_casts in the implementation. Keep the default implementation which calls virtual_hook(), for compatibility. Note: availableSizes was already virtual, but now loses the “const”. Port two overrides in the platform themes. Keep virutal_hook() around for future expansion. Task-number: QTBUG-85885 Change-Id: I76d0c9f75bfd6ca870c669047d4ef18b82c692e5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/gui/image')
-rw-r--r--src/gui/image/qicon.cpp7
-rw-r--r--src/gui/image/qiconengine.cpp12
-rw-r--r--src/gui/image/qiconengine.h9
3 files changed, 13 insertions, 15 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index e7e13860d8..27206b2cbc 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -876,10 +876,9 @@ QPixmap QIcon::pixmap(const QSize &size, qreal devicePixelRatio, Mode mode, Stat
}
// Try get a pixmap that is big enough to be displayed at device pixel resolution.
- QIconEngine::ScaledPixmapArgument scalePixmapArg = { size * devicePixelRatio, mode, state, devicePixelRatio, QPixmap() };
- d->engine->virtual_hook(QIconEngine::ScaledPixmapHook, reinterpret_cast<void*>(&scalePixmapArg));
- scalePixmapArg.pixmap.setDevicePixelRatio(d->pixmapDevicePixelRatio(devicePixelRatio, size, scalePixmapArg.pixmap.size()));
- return scalePixmapArg.pixmap;
+ QPixmap pixmap = d->engine->scaledPixmap(size * devicePixelRatio, mode, state, devicePixelRatio);
+ pixmap.setDevicePixelRatio(d->pixmapDevicePixelRatio(devicePixelRatio, size, pixmap.size()));
+ return pixmap;
}
/*!
diff --git a/src/gui/image/qiconengine.cpp b/src/gui/image/qiconengine.cpp
index 3033112df0..8bcb6e4705 100644
--- a/src/gui/image/qiconengine.cpp
+++ b/src/gui/image/qiconengine.cpp
@@ -342,12 +342,12 @@ void QIconEngine::virtual_hook(int id, void *data)
\include qiconengine-virtualhookhelper.qdocinc
*/
-QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) const
+QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state)
{
AvailableSizesArgument arg;
arg.mode = mode;
arg.state = state;
- const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::AvailableSizesHook, reinterpret_cast<void*>(&arg));
+ this->virtual_hook(QIconEngine::AvailableSizesHook, reinterpret_cast<void*>(&arg));
return arg.sizes;
}
@@ -358,10 +358,10 @@ QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) c
\include qiconengine-virtualhookhelper.qdocinc
*/
-QString QIconEngine::iconName() const
+QString QIconEngine::iconName()
{
QString name;
- const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::IconNameHook, reinterpret_cast<void*>(&name));
+ virtual_hook(QIconEngine::IconNameHook, reinterpret_cast<void*>(&name));
return name;
}
@@ -372,10 +372,10 @@ QString QIconEngine::iconName() const
\include qiconengine-virtualhookhelper.qdocinc
*/
-bool QIconEngine::isNull() const
+bool QIconEngine::isNull()
{
bool isNull = false;
- const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::IsNullHook, &isNull);
+ virtual_hook(QIconEngine::IsNullHook, &isNull);
return isNull;
}
diff --git a/src/gui/image/qiconengine.h b/src/gui/image/qiconengine.h
index 401c8034eb..00b4e3a19c 100644
--- a/src/gui/image/qiconengine.h
+++ b/src/gui/image/qiconengine.h
@@ -74,11 +74,11 @@ public:
};
virtual QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal,
- QIcon::State state = QIcon::Off) const;
+ QIcon::State state = QIcon::Off);
- virtual QString iconName() const;
- bool isNull() const; // ### Qt6 make virtual
- QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale); // ### Qt6 make virtual
+ virtual QString iconName();
+ virtual bool isNull();
+ virtual QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale);
struct ScaledPixmapArgument
{
@@ -89,7 +89,6 @@ public:
QPixmap pixmap;
};
- // ### Qt6: move content to proper virtual functions
virtual void virtual_hook(int id, void *data);
protected: