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>
This commit is contained in:
parent
fc4a73aa54
commit
462b36c3de
@ -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;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -477,7 +477,7 @@ public:
|
||||
return QAbstractFileIconEngine::toSizeList(sizes, sizes + sizeof(sizes) / sizeof(sizes[0]));
|
||||
}
|
||||
|
||||
QList<QSize> availableSizes(QIcon::Mode = QIcon::Normal, QIcon::State = QIcon::Off) const override
|
||||
QList<QSize> availableSizes(QIcon::Mode = QIcon::Normal, QIcon::State = QIcon::Off) override
|
||||
{ return QCocoaFileIconEngine::availableIconSizes(); }
|
||||
|
||||
protected:
|
||||
|
@ -888,7 +888,7 @@ public:
|
||||
explicit QWindowsFileIconEngine(const QFileInfo &info, QPlatformTheme::IconOptions opts) :
|
||||
QAbstractFileIconEngine(info, opts) {}
|
||||
|
||||
QList<QSize> availableSizes(QIcon::Mode = QIcon::Normal, QIcon::State = QIcon::Off) const override
|
||||
QList<QSize> availableSizes(QIcon::Mode = QIcon::Normal, QIcon::State = QIcon::Off) override
|
||||
{ return QWindowsTheme::instance()->availableFileIconSizes(); }
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user