Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/Application.cpp5
-rw-r--r--src/gui/osutils/winutils/WinUtils.cpp6
-rw-r--r--src/gui/osutils/winutils/WinUtils.h1
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);