Qt: Fix initial icon colours in native theme

m_is_colored was not initialized at the time it was being used.
pull/3750/head
Stenzek 1 month ago
parent 2a32d70144
commit c1adcb5a40
No known key found for this signature in database

@ -39,29 +39,19 @@ static QColor GetIconColorFromPalette(QIcon::Mode mode, QIcon::State state)
}
/// Constructs a cache key for the given resource path, pixel size, and RGBA color value.
static QString BuildCacheKey(const QString& resource_path, const QSize& size, qreal dpr, const QColor& color)
static QString BuildCacheKey(const QString& resource_path, const QSize& size, qreal dpr, QIcon::Mode mode,
const QColor& color)
{
// Cache key includes path, size, and colour so stale entries are not reused after a palette change.
return QStringLiteral("%1_%2x%3@%4_%5")
return QStringLiteral("%1_%2x%3@%4%5_%6")
.arg(resource_path)
.arg(size.width())
.arg(size.height())
.arg(dpr)
.arg(static_cast<u8>(mode))
.arg(static_cast<unsigned>(color.rgba()), 8, 16, QLatin1Char('0'));
}
// Constructs a cache key for non-coloured icons (relies on the mode).
static QString BuildCacheKey(const QString& resource_path, const QSize& size, qreal dpr, QIcon::Mode mode)
{
// Cache key includes path, size, and colour so stale entries are not reused after a palette change.
return QStringLiteral("%1_%2x%3@%4_%5")
.arg(resource_path)
.arg(size.width())
.arg(size.height())
.arg(dpr)
.arg(static_cast<u8>(mode));
}
/// Callback used when freeing the QImage.
static void CleanupPlutoSVGSurface(void* surface)
{
@ -174,9 +164,8 @@ QPixmap SVGIconEngine::getPixmap(const QSize& size, qreal dpr, QIcon::Mode mode,
{
// Apply device pixel ratio to requested size so we can cache pixmaps at the correct sizes for different DPRs.
const QSize scaled_size = QtUtils::ApplyDevicePixelRatioToSize(size, dpr);
const QColor color = m_is_colored ? GetIconColorFromPalette(mode, state) : QColor();
const QString cache_key = m_is_colored ? BuildCacheKey(m_resource_path, scaled_size, dpr, color) :
BuildCacheKey(m_resource_path, scaled_size, dpr, mode);
const QColor color = GetIconColorFromPalette(mode, state);
const QString cache_key = BuildCacheKey(m_resource_path, scaled_size, dpr, mode, color);
QPixmap pm;
if (!QPixmapCache::find(cache_key, &pm))

Loading…
Cancel
Save