Fix using system theme icons with Qt 5 (#10052)

With Qt 5, our code did not correctly detect when icons were
available and thus tried to use nonexistent icons.

QIcon::hasThemeIcon(theme_icon) returns true when theme_icon is
empty. We now rely on the behavior that QIcon::isNull() returns true
if the icon is empty.

The same code is used with Qt 4 and Qt 5.
This commit is contained in:
Scott Kostyshak 2016-05-22 20:39:46 -04:00
parent e16018afb8
commit 594748374b

View File

@ -600,12 +600,16 @@ QIcon getIcon(FuncRequest const & f, bool unknown)
{ {
#if (QT_VERSION >= 0x040600) #if (QT_VERSION >= 0x040600)
if (lyxrc.use_system_theme_icons) { if (lyxrc.use_system_theme_icons) {
// use the icons from system theme that are available
QString action = toqstr(lyxaction.getActionName(f.action())); QString action = toqstr(lyxaction.getActionName(f.action()));
if (!f.argument().empty()) if (!f.argument().empty())
action += " " + toqstr(f.argument()); action += " " + toqstr(f.argument());
QString const theme_icon = themeIconName(action); QString const theme_icon = themeIconName(action);
if (QIcon::hasThemeIcon(theme_icon)) if (QIcon::hasThemeIcon(theme_icon)) {
return QIcon::fromTheme(theme_icon); QIcon const thmicn = QIcon::fromTheme(theme_icon);
if (!thmicn.isNull())
return thmicn;
}
} }
#endif #endif