From 2fe74c294774aeb2a2b32f55fe7ae4096d067215 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Fri, 10 Jul 2020 13:29:49 +0200 Subject: [PATCH] Reset icon theme name before calling QIcon::fromTheme(). qt5ct randomly resets the active Qt icon theme to "", resulting in empty or wrong icons. See https://sourceforge.net/p/qt5ct/tickets/80/ Fixes #4963 --- src/core/Resources.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/Resources.cpp b/src/core/Resources.cpp index ad1ff5fa0..2f99c9349 100644 --- a/src/core/Resources.cpp +++ b/src/core/Resources.cpp @@ -153,6 +153,15 @@ QIcon Resources::icon(const QString& name, bool recolor, const QColor& overrideC return icon; } + // Resetting the application theme name before calling QIcon::fromTheme() is required for hacky + // QPA platform themes such as qt5ct, which randomly mess with the configured icon theme. + // If we do not reset the theme name here, it will become empty at some point, causing + // Qt to look for icons at the user-level and global default locations. + // + // See issue #4963: https://github.com/keepassxreboot/keepassxc/issues/4963 + // and qt5ct issue #80: https://sourceforge.net/p/qt5ct/tickets/80/ + QIcon::setThemeName("application"); + icon = QIcon::fromTheme(name); if (getMainWindow() && recolor) { QImage img = icon.pixmap(128, 128).toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied);