Support fallback when selecting theme icons

Fallback icon theme are not supported everywhere. Hence we mimic
signature of QIcon::fromTheme().
This commit is contained in:
Eugene Shalygin 2017-01-13 17:01:36 +01:00 committed by sledgehammer999
commit 2946ab7e7a
No known key found for this signature in database
GPG key ID: 6E4A2D025B7CC9A2
2 changed files with 9 additions and 1 deletions

View file

@ -57,10 +57,17 @@ GuiIconProvider *GuiIconProvider::instance()
} }
QIcon GuiIconProvider::getIcon(const QString &iconId) QIcon GuiIconProvider::getIcon(const QString &iconId)
{
return getIcon(iconId, iconId);
}
QIcon GuiIconProvider::getIcon(const QString &iconId, const QString &fallback)
{ {
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
if (m_useSystemTheme) { if (m_useSystemTheme) {
QIcon icon = QIcon::fromTheme(iconId, QIcon(IconProvider::getIconPath(iconId))); QIcon icon = QIcon::fromTheme(iconId);
if (icon.name() != iconId)
icon = QIcon::fromTheme(fallback, QIcon(IconProvider::getIconPath(iconId)));
icon = generateDifferentSizes(icon); icon = generateDifferentSizes(icon);
return icon; return icon;
} }

View file

@ -44,6 +44,7 @@ public:
static GuiIconProvider *instance(); static GuiIconProvider *instance();
QIcon getIcon(const QString &iconId); QIcon getIcon(const QString &iconId);
QIcon getIcon(const QString &iconId, const QString &fallback);
QIcon getFlagIcon(const QString &countryIsoCode); QIcon getFlagIcon(const QString &countryIsoCode);
QString getIconPath(const QString &iconId); QString getIconPath(const QString &iconId);