diff --git a/src/gui/uithememanager.cpp b/src/gui/uithememanager.cpp index 43d076e6f..15cf93fe4 100644 --- a/src/gui/uithememanager.cpp +++ b/src/gui/uithememanager.cpp @@ -31,7 +31,6 @@ #include #include -#include #include #include #include @@ -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 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 { #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()) diff --git a/src/gui/uithememanager.h b/src/gui/uithememanager.h index 95166d918..3eb3b0a21 100644 --- a/src/gui/uithememanager.h +++ b/src/gui/uithememanager.h @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -60,6 +61,7 @@ private: static UIThemeManager *m_instance; QHash m_colors; + mutable QHash m_iconCache; const bool m_useCustomTheme; #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) bool m_useSystemTheme;