diff --git a/src/librssguard/gui/settings/settingsgui.cpp b/src/librssguard/gui/settings/settingsgui.cpp index 9d737a567..9a5d4672c 100644 --- a/src/librssguard/gui/settings/settingsgui.cpp +++ b/src/librssguard/gui/settings/settingsgui.cpp @@ -36,7 +36,7 @@ SettingsGui::SettingsGui(Settings* settings, QWidget* parent) : SettingsPanel(se m_ui->m_treeSkins->header()->setSectionResizeMode(2, QHeaderView::ResizeMode::ResizeToContents); connect(m_ui->m_cmbStyles, &QComboBox::currentTextChanged, this, [this](const QString& txt) { - m_ui->m_checkForceDarkFusion->setVisible(txt.toLower() == QSL("fusion")); + m_ui->m_checkForceDarkFusion->setVisible(qApp->skins()->isStyleGoodForDarkVariant(txt)); }); connect(m_ui->m_cmbIconTheme, static_cast(&QComboBox::currentIndexChanged), this, &SettingsGui::requireRestart); diff --git a/src/librssguard/miscellaneous/skinfactory.cpp b/src/librssguard/miscellaneous/skinfactory.cpp index 2ca97ffc7..b2e5e2da4 100644 --- a/src/librssguard/miscellaneous/skinfactory.cpp +++ b/src/librssguard/miscellaneous/skinfactory.cpp @@ -42,6 +42,10 @@ void SkinFactory::loadCurrentSkin() { qCriticalNN << LOGSEC_GUI << "Failed to load selected or default skin. Quitting!"; } +bool SkinFactory::isStyleGoodForDarkVariant(const QString& style_name) const { + return QRegularExpression("^(fusion)|(qt5ct-style)$").match(style_name.toLower()).hasMatch(); +} + void SkinFactory::loadSkinFromData(const Skin& skin) { if (!skin.m_rawData.isEmpty()) { if (qApp->styleSheet().simplified().isEmpty()) { @@ -57,7 +61,7 @@ void SkinFactory::loadSkinFromData(const Skin& skin) { qApp->setStyle(style_name); - if (style_name.toLower() == QSL("fusion") && + if (isStyleGoodForDarkVariant(style_name) && qApp->settings()->value(GROUP(GUI), SETTING(GUI::ForceDarkFusion)).toBool()) { qDebugNN << LOGSEC_GUI << "Activating dark palette for Fusion style."; diff --git a/src/librssguard/miscellaneous/skinfactory.h b/src/librssguard/miscellaneous/skinfactory.h index 82b53599a..72796dc35 100644 --- a/src/librssguard/miscellaneous/skinfactory.h +++ b/src/librssguard/miscellaneous/skinfactory.h @@ -45,6 +45,8 @@ class RSSGUARD_DLLSPEC SkinFactory : public QObject { void loadCurrentSkin(); Skin currentSkin() const; + bool isStyleGoodForDarkVariant(const QString& style_name) const; + // Returns the name of the skin, that should be activated // after application restart. QString selectedSkinName() const;