[IconItem] Don't crash on null KIconLoader theme

REVIEW: 126168
BUG: 355577
FIXED-IN: 5.17
This commit is contained in:
Kai Uwe Broulik 2015-11-25 18:17:57 +01:00
parent df88cef4a8
commit 9ccc6293f7

View File

@ -134,9 +134,15 @@ void IconItem::setSource(const QVariant &source)
//ok, svg not available from the plasma theme //ok, svg not available from the plasma theme
} else { } else {
//try to load from iconloader an svg with Plasma::Svg //try to load from iconloader an svg with Plasma::Svg
QString iconPath = KIconLoader::global()->theme()->iconPath(source.toString() + ".svg", qMin(width(), height()), KIconLoader::MatchBest); const auto *iconTheme = KIconLoader::global()->theme();
if (iconPath.isEmpty()) { QString iconPath;
iconPath = KIconLoader::global()->theme()->iconPath(source.toString() + ".svgz", qMin(width(), height()), KIconLoader::MatchBest); if (iconTheme) {
iconTheme->iconPath(source.toString() + ".svg", qMin(width(), height()), KIconLoader::MatchBest);
if (iconPath.isEmpty()) {
iconPath = iconTheme->iconPath(source.toString() + ".svgz", qMin(width(), height()), KIconLoader::MatchBest);
}
} else {
qWarning() << "KIconLoader has no theme set";
} }
m_svgFromIconLoader = !iconPath.isEmpty(); m_svgFromIconLoader = !iconPath.isEmpty();
@ -339,9 +345,15 @@ void IconItem::loadPixmap()
if (m_svgIcon->hasElement(m_source.toString())) { if (m_svgIcon->hasElement(m_source.toString())) {
result = m_svgIcon->pixmap(m_source.toString()); result = m_svgIcon->pixmap(m_source.toString());
} else if (m_svgFromIconLoader) { } else if (m_svgFromIconLoader) {
QString iconPath = KIconLoader::global()->theme()->iconPath(source().toString() + ".svg", qMin(width(), height()), KIconLoader::MatchBest); const auto *iconTheme = KIconLoader::global()->theme();
if (iconPath.isEmpty()) { QString iconPath;
iconPath = KIconLoader::global()->theme()->iconPath(source().toString() + ".svgz", qMin(width(), height()), KIconLoader::MatchBest); if (iconTheme) {
QString iconPath = iconTheme->iconPath(source().toString() + ".svg", qMin(width(), height()), KIconLoader::MatchBest);
if (iconPath.isEmpty()) {
iconPath = iconTheme->iconPath(source().toString() + ".svgz", qMin(width(), height()), KIconLoader::MatchBest);
}
} else {
qWarning() << "KIconLoader has no theme set";
} }
if (!iconPath.isEmpty()) { if (!iconPath.isEmpty()) {