diff --git a/Source/Core/DolphinQt/Main.cpp b/Source/Core/DolphinQt/Main.cpp index 1c658e8d62..a530f14f8d 100644 --- a/Source/Core/DolphinQt/Main.cpp +++ b/Source/Core/DolphinQt/Main.cpp @@ -2,11 +2,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later #ifdef _WIN32 +#include #include #include #include -#include + +#include #endif #ifdef __linux__ @@ -244,6 +246,20 @@ int main(int argc, char* argv[]) DolphinAnalytics::Instance().ReportDolphinStart("qt"); MainWindow win{std::move(boot), static_cast(options.get("movie"))}; + +#ifdef _WIN32 + // Check if the system is set to dark mode so we can set the default theme and window + // decorations accordingly. + { + using namespace winrt::Windows::UI::ViewManagement; + const UISettings settings; + const auto& color = settings.GetColorValue(UIColorType::Foreground); + + const bool is_system_dark = 5 * color.G + 2 * color.R + color.B > 8 * 128; + Settings::Instance().SetSystemDark(is_system_dark); + } +#endif + Settings::Instance().SetCurrentUserStyle(Settings::Instance().GetCurrentUserStyle()); win.Show(); diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp index c6a06336e2..4849ab4adb 100644 --- a/Source/Core/DolphinQt/Settings.cpp +++ b/Source/Core/DolphinQt/Settings.cpp @@ -47,6 +47,8 @@ #include "VideoCommon/NetPlayChatUI.h" #include "VideoCommon/NetPlayGolfUI.h" +static bool s_system_dark = false; + Settings::Settings() { qRegisterMetaType(); @@ -125,6 +127,16 @@ QString Settings::GetCurrentUserStyle() const return QFileInfo(GetQSettings().value(QStringLiteral("userstyle/path")).toString()).fileName(); } +void Settings::SetSystemDark(bool dark) +{ + s_system_dark = dark; +} + +bool Settings::IsSystemDark() +{ + return s_system_dark; +} + // Calling this before the main window has been created breaks the style of some widgets. void Settings::SetCurrentUserStyle(const QString& stylesheet_name) { diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h index 30ab757753..ae58aca8a5 100644 --- a/Source/Core/DolphinQt/Settings.h +++ b/Source/Core/DolphinQt/Settings.h @@ -52,6 +52,8 @@ public: // UI void SetThemeName(const QString& theme_name); + void SetSystemDark(bool dark); + bool IsSystemDark(); void SetCurrentUserStyle(const QString& stylesheet_name); QString GetCurrentUserStyle() const;