Browse Source

Make the icon cache a class variable

adaptive-webui-19844
Chocobo1 4 years ago
parent
commit
00eb61543d
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 14
      src/gui/uithememanager.cpp
  2. 2
      src/gui/uithememanager.h

14
src/gui/uithememanager.cpp

@ -31,7 +31,6 @@ @@ -31,7 +31,6 @@
#include <QApplication>
#include <QFile>
#include <QIcon>
#include <QJsonDocument>
#include <QJsonObject>
#include <QPalette>
@ -127,14 +126,15 @@ QIcon UIThemeManager::getIcon(const QString &iconId, const QString &fallback) co @@ -127,14 +126,15 @@ QIcon UIThemeManager::getIcon(const QString &iconId, const QString &fallback) co
return icon;
}
#endif
// cache to avoid rescaling svg icons
static QHash<QString, QIcon> iconCache;
const auto iter = iconCache.find(iconId);
if (iter != iconCache.end())
// Cache to avoid rescaling svg icons
// And don't cache system icons because users might change them at run time
const auto iter = m_iconCache.find(iconId);
if (iter != m_iconCache.end())
return *iter;
const QIcon icon {getIconPathFromResources(iconId, fallback)};
iconCache[iconId] = icon;
m_iconCache[iconId] = icon;
return icon;
}
@ -153,7 +153,7 @@ QString UIThemeManager::getIconPath(const QString &iconId) const @@ -153,7 +153,7 @@ QString UIThemeManager::getIconPath(const QString &iconId) const
{
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS))
if (m_useSystemTheme) {
QString path = Utils::Fs::tempPath() + iconId + ".png";
QString path = Utils::Fs::tempPath() + iconId + QLatin1String(".png");
if (!QFile::exists(path)) {
const QIcon icon = QIcon::fromTheme(iconId);
if (!icon.isNull())

2
src/gui/uithememanager.h

@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
#include <QColor>
#include <QHash>
#include <QIcon>
#include <QObject>
#include <QString>
@ -60,6 +61,7 @@ private: @@ -60,6 +61,7 @@ private:
static UIThemeManager *m_instance;
QHash<QString, QColor> m_colors;
mutable QHash<QString, QIcon> m_iconCache;
const bool m_useCustomTheme;
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS))
bool m_useSystemTheme;

Loading…
Cancel
Save