diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-08-11 22:35:55 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-08-27 22:47:33 +0200 |
commit | 462b36c3dee591bd964670dc614b995ece335331 (patch) | |
tree | 9e3de2988b07ae99f6904bf71d57f8957bff3171 /src/gui/image | |
parent | fc4a73aa544bf03d881ddb7e2eb8ebd47d7da7b8 (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.cpp | 7 | ||||
-rw-r--r-- | src/gui/image/qiconengine.cpp | 12 | ||||
-rw-r--r-- | src/gui/image/qiconengine.h | 9 |
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: |