diff --git a/libs/widgetutils/kis_icon_utils.cpp b/libs/widgetutils/kis_icon_utils.cpp --- a/libs/widgetutils/kis_icon_utils.cpp +++ b/libs/widgetutils/kis_icon_utils.cpp @@ -33,10 +33,15 @@ namespace KisIconUtils { +static QMap s_cache; static QMap s_icons; QIcon loadIcon(const QString &name) { + QMap::const_iterator cached = s_cache.constFind(name); + if (cached != s_cache.constEnd()) { + return cached.value(); + } // try load themed icon @@ -64,6 +69,7 @@ if (QFile(resname).exists()) { QIcon icon(resname); s_icons.insert(icon.cacheKey(), name); + s_cache.insert(name, icon); return icon; } } @@ -102,11 +108,14 @@ icon.addFile(p.second, QSize(size, size)); } s_icons.insert(icon.cacheKey(), name); + s_cache.insert(name, icon); return icon; } QIcon icon = QIcon::fromTheme(name); qWarning() << "\tfalling back on QIcon::FromTheme:" << name; + s_icons.insert(icon.cacheKey(), name); + s_cache.insert(name, icon); return icon; }