From 462b36c3dee591bd964670dc614b995ece335331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Tue, 11 Aug 2020 22:35:55 +0200 Subject: QIconEngine: move away from virtual_hook usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade existing functions to be virtual functions: - virtual QString iconName() - virtual bool isNull() - virtual QPixmap scaledPixmap(...) - virtual QList 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ø --- src/gui/image/qicon.cpp | 7 +++---- src/gui/image/qiconengine.cpp | 12 ++++++------ src/gui/image/qiconengine.h | 9 ++++----- 3 files changed, 13 insertions(+), 15 deletions(-) (limited to 'src/gui/image') 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(&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 QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) const +QList QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) { AvailableSizesArgument arg; arg.mode = mode; arg.state = state; - const_cast(this)->virtual_hook(QIconEngine::AvailableSizesHook, reinterpret_cast(&arg)); + this->virtual_hook(QIconEngine::AvailableSizesHook, reinterpret_cast(&arg)); return arg.sizes; } @@ -358,10 +358,10 @@ QList QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) c \include qiconengine-virtualhookhelper.qdocinc */ -QString QIconEngine::iconName() const +QString QIconEngine::iconName() { QString name; - const_cast(this)->virtual_hook(QIconEngine::IconNameHook, reinterpret_cast(&name)); + virtual_hook(QIconEngine::IconNameHook, reinterpret_cast(&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(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 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: -- cgit v1.2.3