1111#include < QtCore/QFile>
1212#include < QtGui/QPalette>
1313#include < QtGui/QPixmapCache>
14+ #include < QtGui/QStyleHints>
1415#include < QtWidgets/QApplication>
1516#include < QtWidgets/QStyle>
1617#include < QtWidgets/QStyleFactory>
1718
1819namespace QtHost
1920{
2021 static void SetStyleFromSettings ();
22+ static void SetColorSchemeBasedOnPalette ();
2123} // namespace QtHost
2224
2325static QString s_unthemed_style_name;
@@ -52,15 +54,9 @@ void QtHost::UpdateApplicationTheme()
5254 QPixmapCache::clear ();
5355}
5456
55- bool QtHost::IsDarkApplicationTheme ()
56- {
57- QPalette palette = qApp->palette ();
58- return (palette.windowText ().color ().value () > palette.window ().color ().value ());
59- }
60-
6157void QtHost::SetIconThemeFromStyle ()
6258{
63- const bool dark = IsDarkApplicationTheme () ;
59+ const bool dark = qApp-> styleHints ()-> colorScheme () == Qt::ColorScheme::Dark ;
6460 QIcon::setThemeName (dark ? QStringLiteral (" white" ) : QStringLiteral (" black" ));
6561}
6662
@@ -73,13 +69,15 @@ void QtHost::SetStyleFromSettings()
7369 qApp->setStyle (QStyleFactory::create (" Fusion" ));
7470 qApp->setPalette (s_unthemed_palette);
7571 qApp->setStyleSheet (QString ());
72+ SetColorSchemeBasedOnPalette ();
7673 }
7774#ifdef _WIN32
7875 else if (theme == " windowsvista" )
7976 {
8077 qApp->setStyle (QStyleFactory::create (" windowsvista" ));
8178 qApp->setPalette (s_unthemed_palette);
8279 qApp->setStyleSheet (QString ());
80+ SetColorSchemeBasedOnPalette ();
8381 }
8482#endif
8583 else if (theme == " darkfusion" )
@@ -116,6 +114,7 @@ void QtHost::SetStyleFromSettings()
116114
117115 qApp->setPalette (darkPalette);
118116 qApp->setStyleSheet (QString ());
117+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
119118 }
120119 else if (theme == " darkfusionblue" )
121120 {
@@ -151,6 +150,7 @@ void QtHost::SetStyleFromSettings()
151150
152151 qApp->setPalette (darkBluePalette);
153152 qApp->setStyleSheet (QString ());
153+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
154154 }
155155 else if (theme == " GreyMatter" )
156156 {
@@ -187,6 +187,7 @@ void QtHost::SetStyleFromSettings()
187187
188188 qApp->setPalette (greyMatterPalette);
189189 qApp->setStyleSheet (QString ());
190+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
190191 }
191192 else if (theme == " UntouchedLagoon" )
192193 {
@@ -222,6 +223,7 @@ void QtHost::SetStyleFromSettings()
222223
223224 qApp->setPalette (untouchedLagoonPalette);
224225 qApp->setStyleSheet (QString ());
226+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Light);
225227 }
226228 else if (theme == " BabyPastel" )
227229 {
@@ -259,6 +261,7 @@ void QtHost::SetStyleFromSettings()
259261
260262 qApp->setPalette (babyPastelPalette);
261263 qApp->setStyleSheet (QString ());
264+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Light);
262265 }
263266 else if (theme == " PizzaBrown" )
264267 {
@@ -296,6 +299,7 @@ void QtHost::SetStyleFromSettings()
296299
297300 qApp->setPalette (pizzaPalette);
298301 qApp->setStyleSheet (QString ());
302+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Light);
299303 }
300304 else if (theme == " PCSX2Blue" )
301305 {
@@ -331,6 +335,7 @@ void QtHost::SetStyleFromSettings()
331335
332336 qApp->setPalette (pcsx2BluePalette);
333337 qApp->setStyleSheet (QString ());
338+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Light);
334339 }
335340 else if (theme == " ScarletDevilRed" )
336341 {
@@ -364,6 +369,7 @@ void QtHost::SetStyleFromSettings()
364369
365370 qApp->setPalette (scarletDevilPalette);
366371 qApp->setStyleSheet (QString ());
372+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
367373 }
368374 else if (theme == " VioletAngelPurple" )
369375 {
@@ -397,6 +403,7 @@ void QtHost::SetStyleFromSettings()
397403
398404 qApp->setPalette (violetAngelPalette);
399405 qApp->setStyleSheet (QString ());
406+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
400407 }
401408 else if (theme == " CobaltSky" )
402409 {
@@ -434,6 +441,7 @@ void QtHost::SetStyleFromSettings()
434441
435442 qApp->setPalette (cobaltSkyPalette);
436443 qApp->setStyleSheet (QString ());
444+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
437445 }
438446 else if (theme == " AMOLED" )
439447 {
@@ -470,6 +478,7 @@ void QtHost::SetStyleFromSettings()
470478
471479 qApp->setPalette (AMOLEDPalette);
472480 qApp->setStyleSheet (QString ());
481+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
473482 }
474483 else if (theme == " Ruby" )
475484 {
@@ -503,6 +512,7 @@ void QtHost::SetStyleFromSettings()
503512
504513 qApp->setPalette (rubyPalette);
505514 qApp->setStyleSheet (QString ());
515+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
506516 }
507517 else if (theme == " Sapphire" )
508518 {
@@ -536,6 +546,7 @@ void QtHost::SetStyleFromSettings()
536546
537547 qApp->setPalette (sapphirePalette);
538548 qApp->setStyleSheet (QString ());
549+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
539550 }
540551 else if (theme == " Emerald" )
541552 {
@@ -569,6 +580,7 @@ void QtHost::SetStyleFromSettings()
569580
570581 qApp->setPalette (emeraldPalette);
571582 qApp->setStyleSheet (QString ());
583+ qApp->styleHints ()->setColorScheme (Qt::ColorScheme::Dark);
572584 }
573585 else if (theme == " Custom" )
574586 {
@@ -587,11 +599,21 @@ void QtHost::SetStyleFromSettings()
587599 {
588600 qApp->setStyle (QStyleFactory::create (" Fusion" ));
589601 }
602+
603+ SetColorSchemeBasedOnPalette ();
590604 }
591605 else
592606 {
593607 qApp->setStyle (s_unthemed_style_name);
594608 qApp->setPalette (s_unthemed_palette);
595609 qApp->setStyleSheet (QString ());
610+ SetColorSchemeBasedOnPalette ();
596611 }
597612}
613+
614+ static void QtHost::SetColorSchemeBasedOnPalette ()
615+ {
616+ QPalette palette = qApp->palette ();
617+ bool dark = palette.windowText ().color ().value () > palette.window ().color ().value ();
618+ qApp->styleHints ()->setColorScheme (dark ? Qt::ColorScheme::Dark : Qt::ColorScheme::Light);
619+ }
0 commit comments