diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp index bb6d37b9..3e97639d 100644 --- a/src/gui/Application.cpp +++ b/src/gui/Application.cpp @@ -147,6 +147,11 @@ void Application::applyTheme() auto appTheme = config()->get(Config::GUI_ApplicationTheme).toString(); if (appTheme == "auto") { appTheme = osUtils->isDarkMode() ? "dark" : "light"; +#ifdef Q_OS_WIN + if (winUtils()->isHighContrastMode()) { + appTheme = "classic"; + } +#endif } if (appTheme == "light") { diff --git a/src/gui/osutils/winutils/WinUtils.cpp b/src/gui/osutils/winutils/WinUtils.cpp index 385a9389..61e913c9 100644 --- a/src/gui/osutils/winutils/WinUtils.cpp +++ b/src/gui/osutils/winutils/WinUtils.cpp @@ -105,3 +105,9 @@ bool WinUtils::isCapslockEnabled() { return GetKeyState(VK_CAPITAL) == 1; } + +bool WinUtils::isHighContrastMode() const +{ + QSettings settings(R"(HKEY_CURRENT_USER\Control Panel\Accessibility\HighContrast)", QSettings::NativeFormat); + return (settings.value("Flags").toInt() & 1u) != 0; +} diff --git a/src/gui/osutils/winutils/WinUtils.h b/src/gui/osutils/winutils/WinUtils.h index bf49f2c7..c1904027 100644 --- a/src/gui/osutils/winutils/WinUtils.h +++ b/src/gui/osutils/winutils/WinUtils.h @@ -36,6 +36,7 @@ public: bool isLaunchAtStartupEnabled() const override; void setLaunchAtStartup(bool enable) override; bool isCapslockEnabled() override; + bool isHighContrastMode() const; protected: explicit WinUtils(QObject* parent = nullptr);