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:
commit
ed9ccbe471
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user