From e2d5da815165b32a655a17a5e2baf87feb96b888 Mon Sep 17 00:00:00 2001 From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com> Date: Wed, 16 Nov 2022 16:02:59 -0300 Subject: [PATCH] windows: watch for system theme change Requires Windows SDK version 10.0.18362.0 and Windows Runtime 10.0.10240.0. GitLab: #723 Change-Id: I166c236bf24419b4abfe323f88e470dd07afbd4f --- src/app/utilsadapter.cpp | 6 ++++++ src/app/utilsadapter.h | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/app/utilsadapter.cpp b/src/app/utilsadapter.cpp index 1e34bd33d..cb1fdd83c 100644 --- a/src/app/utilsadapter.cpp +++ b/src/app/utilsadapter.cpp @@ -697,6 +697,12 @@ UtilsAdapter::isSystemThemeDark() return false; #else #if defined(WIN32) && __has_include(<winrt/Windows.Foundation.h>) +#if WATCHSYSTEMTHEME + if (!settings) { + settings = UISettings(); + settings.ColorValuesChanged([this](auto&&...) { Q_EMIT appThemeChanged(); }); + } +#endif return readAppsUseLightThemeRegistry(true); #else qWarning("System theme detection is not implemented or is not supported"); diff --git a/src/app/utilsadapter.h b/src/app/utilsadapter.h index 89fad2513..c0a520e5c 100644 --- a/src/app/utilsadapter.h +++ b/src/app/utilsadapter.h @@ -35,6 +35,15 @@ #if defined(WIN32) && __has_include(<winrt/Windows.Foundation.h>) #include <winrt/Windows.Foundation.h> + +#define WATCHSYSTEMTHEME \ + __has_include(<winrt/Windows.UI.ViewManagement.h>) + +#if WATCHSYSTEMTHEME +#include <winrt/Windows.UI.ViewManagement.h> +#endif + +using winrt::Windows::UI::ViewManagement::UISettings; #endif class QClipboard; @@ -151,5 +160,9 @@ private: GSettings* settings {nullptr}; GSettingsSchema* schema {nullptr}; #endif + +#if WATCHSYSTEMTHEME + UISettings settings = NULL; +#endif }; Q_DECLARE_METATYPE(UtilsAdapter*) -- GitLab