1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge pull request #3151

Jason Papakostas (1):
      fix(Widget::updateIcons): workaround QIcon fallback bug
This commit is contained in:
sudden6 2016-04-19 18:33:05 +02:00
commit ed9ccbe471
No known key found for this signature in database
GPG Key ID: 279509B499E032B9

View File

@ -445,8 +445,35 @@ void Widget::updateIcons()
status = QStringLiteral("offline"); status = QStringLiteral("offline");
} }
// Some builds of Qt appear to have a bug in icon loading:
// QIcon::hasThemeIcon is sometimes unaware that the icon returned
// from QIcon::fromTheme was a fallback icon, causing hasThemeIcon to
// incorrectly return true.
//
// In qTox this leads to the tray and window icons using the static qTox logo
// icon instead of an icon based on the current presence status.
//
// This workaround checks for an icon that definitely does not exist to
// determine if hasThemeIcon can be trusted.
//
// On systems with the Qt bug, this workaround will always use our included
// icons but user themes will be unable to override them.
static bool checkedHasThemeIcon = false;
static bool hasThemeIconBug = false;
if (!checkedHasThemeIcon)
{
hasThemeIconBug = QIcon::hasThemeIcon("qtox-asjkdfhawjkeghdfjgh");
checkedHasThemeIcon = true;
if (hasThemeIconBug)
{
qDebug() << "Detected buggy QIcon::hasThemeIcon. Icon overrides from theme will be ignored.";
}
}
QIcon ico; QIcon ico;
if (QIcon::hasThemeIcon("qtox-" + status)) if (!hasThemeIconBug && QIcon::hasThemeIcon("qtox-" + status))
{ {
ico = QIcon::fromTheme("qtox-" + status); ico = QIcon::fromTheme("qtox-" + status);
} }