diff options
Diffstat (limited to 'src/gui/image/qicon.cpp')
-rw-r--r-- | src/gui/image/qicon.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 24acbe9a12..4d25395d69 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1310,11 +1310,15 @@ void QIcon::setFallbackThemeName(const QString &name) */ QIcon QIcon::fromTheme(const QString &name) { - QIcon icon; - if (qtIconCache()->contains(name)) { - icon = *qtIconCache()->object(name); - } else if (QDir::isAbsolutePath(name)) { + if (QIcon *cachedIcon = qtIconCache()->object(name)) { + if (!cachedIcon->isNull()) + return *cachedIcon; + qtIconCache()->remove(name); + } + + QIcon icon; + if (QDir::isAbsolutePath(name)) { return QIcon(name); } else { QPlatformTheme * const platformTheme = QGuiApplicationPrivate::platformTheme(); |