diff options
-rw-r--r-- | src/gui/Application.cpp | 5 | ||||
-rw-r--r-- | src/gui/osutils/winutils/WinUtils.cpp | 6 | ||||
-rw-r--r-- | src/gui/osutils/winutils/WinUtils.h | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp index bb6d37b90..3e97639d6 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 385a9389a..61e913c93 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 bf49f2c7f..c19040274 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); |