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.
|
// Try get a pixmap that is big enough to be displayed at device pixel resolution.
|
||||||
QIconEngine::ScaledPixmapArgument scalePixmapArg = { size * devicePixelRatio, mode, state, devicePixelRatio, QPixmap() };
|
QPixmap pixmap = d->engine->scaledPixmap(size * devicePixelRatio, mode, state, devicePixelRatio);
|
||||||
d->engine->virtual_hook(QIconEngine::ScaledPixmapHook, reinterpret_cast<void*>(&scalePixmapArg));
|
pixmap.setDevicePixelRatio(d->pixmapDevicePixelRatio(devicePixelRatio, size, pixmap.size()));
|
||||||
scalePixmapArg.pixmap.setDevicePixelRatio(d->pixmapDevicePixelRatio(devicePixelRatio, size, scalePixmapArg.pixmap.size()));
|
return pixmap;
|
||||||
return scalePixmapArg.pixmap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -342,12 +342,12 @@ void QIconEngine::virtual_hook(int id, void *data)
|
|||||||
|
|
||||||
\include qiconengine-virtualhookhelper.qdocinc
|
\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;
|
AvailableSizesArgument arg;
|
||||||
arg.mode = mode;
|
arg.mode = mode;
|
||||||
arg.state = state;
|
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;
|
return arg.sizes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,10 +358,10 @@ QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) c
|
|||||||
|
|
||||||
\include qiconengine-virtualhookhelper.qdocinc
|
\include qiconengine-virtualhookhelper.qdocinc
|
||||||
*/
|
*/
|
||||||
QString QIconEngine::iconName() const
|
QString QIconEngine::iconName()
|
||||||
{
|
{
|
||||||
QString name;
|
QString name;
|
||||||
const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::IconNameHook, reinterpret_cast<void*>(&name));
|
virtual_hook(QIconEngine::IconNameHook, reinterpret_cast<void*>(&name));
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,10 +372,10 @@ QString QIconEngine::iconName() const
|
|||||||
|
|
||||||
\include qiconengine-virtualhookhelper.qdocinc
|
\include qiconengine-virtualhookhelper.qdocinc
|
||||||
*/
|
*/
|
||||||
bool QIconEngine::isNull() const
|
bool QIconEngine::isNull()
|
||||||
{
|
{
|
||||||
bool isNull = false;
|
bool isNull = false;
|
||||||
const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::IsNullHook, &isNull);
|
virtual_hook(QIconEngine::IsNullHook, &isNull);
|
||||||
return isNull;
|
return isNull;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,11 +74,11 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
virtual QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal,
|
virtual QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal,
|
||||||
QIcon::State state = QIcon::Off) const;
|
QIcon::State state = QIcon::Off);
|
||||||
|
|
||||||
virtual QString iconName() const;
|
virtual QString iconName();
|
||||||
bool isNull() const; // ### Qt6 make virtual
|
virtual bool isNull();
|
||||||
QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale); // ### Qt6 make virtual
|
virtual QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale);
|
||||||
|
|
||||||
struct ScaledPixmapArgument
|
struct ScaledPixmapArgument
|
||||||
{
|
{
|
||||||
@ -89,7 +89,6 @@ public:
|
|||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
// ### Qt6: move content to proper virtual functions
|
|
||||||
virtual void virtual_hook(int id, void *data);
|
virtual void virtual_hook(int id, void *data);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -477,7 +477,7 @@ public:
|
|||||||
return QAbstractFileIconEngine::toSizeList(sizes, sizes + sizeof(sizes) / sizeof(sizes[0]));
|
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(); }
|
{ return QCocoaFileIconEngine::availableIconSizes(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -888,7 +888,7 @@ public:
|
|||||||
explicit QWindowsFileIconEngine(const QFileInfo &info, QPlatformTheme::IconOptions opts) :
|
explicit QWindowsFileIconEngine(const QFileInfo &info, QPlatformTheme::IconOptions opts) :
|
||||||
QAbstractFileIconEngine(info, 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(); }
|
{ return QWindowsTheme::instance()->availableFileIconSizes(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user