diff --git a/uppsrc/CtrlCore/Ctrl.cpp b/uppsrc/CtrlCore/Ctrl.cpp index c6b4e95c7..ff34fe1ce 100644 --- a/uppsrc/CtrlCore/Ctrl.cpp +++ b/uppsrc/CtrlCore/Ctrl.cpp @@ -842,6 +842,20 @@ bool Ctrl::IsUHDEnabled() return ApplicationUHDEnabled; } +bool ApplicationDarkThemeEnabled; + +void Ctrl::SetDarkThemeEnabled(bool set) +{ + ApplicationDarkThemeEnabled = set; + ReSkin(); +} + +bool Ctrl::IsDarkThemeEnabled() +{ + return ApplicationDarkThemeEnabled; +} + + Font StdFontZ(int height) { return FontZ(Font::STDFONT, height); } Font SansSerifZ(int height) { return FontZ(Font::SANSSERIF, height); } Font SerifZ(int height) { return FontZ(Font::SERIF, height); } diff --git a/uppsrc/CtrlCore/CtrlCore.h b/uppsrc/CtrlCore/CtrlCore.h index a64e46883..94f9ad160 100644 --- a/uppsrc/CtrlCore/CtrlCore.h +++ b/uppsrc/CtrlCore/CtrlCore.h @@ -1248,6 +1248,9 @@ public: static void SetUHDEnabled(bool set = true); static bool IsUHDEnabled(); + + static void SetDarkThemeEnabled(bool set = true); + static bool IsDarkThemeEnabled(); static bool ClickFocus(); static void ClickFocus(bool cf); diff --git a/uppsrc/CtrlCore/src.tpp/Ctrl_en-us.tpp b/uppsrc/CtrlCore/src.tpp/Ctrl_en-us.tpp index 912fbe2ce..dd4a06eb0 100644 --- a/uppsrc/CtrlCore/src.tpp/Ctrl_en-us.tpp +++ b/uppsrc/CtrlCore/src.tpp/Ctrl_en-us.tpp @@ -2601,6 +2601,20 @@ is true.&] [s5;:Upp`:`:Ctrl`:`:IsUHDEnabled`(`):%- [@(0.0.255) bool]_[* IsUHDEnabled]()&] [s2; Returns the value set by SetUHDEnabled.&] [s3;%- &] +[s4;%- &] +[s5;:Upp`:`:Ctrl`:`:SetDarkThemeEnabled`(bool`):%- [@(0.0.255) static] +[@(0.0.255) void]_[* SetDarkThemeEnabled]([@(0.0.255) bool]_[*@3 set]_`=_[@(0.0.255) true]) +&] +[s2; Hints coloring and skinning algorithms that the application +is ready to work in dark theme mode. Currently this enables dark +theme in Windows (with other platforms dark theme is enabled +by default).&] +[s3; &] +[s4;%- &] +[s5;:Upp`:`:Ctrl`:`:IsDarkThemeEnabled`(`):%- [@(0.0.255) static] [@(0.0.255) bool]_[* IsDa +rkThemeEnabled]()&] +[s2; Returns the value set by SetDarkThemeEnabled.&] +[s3;%- &] [s4; &] [s5;K:Ctrl`:`:GetWorkArea`(`):%- [*^`:`:Rect^@(64) Rect][*@(64) _][* GetWorkArea][*@(64) ()]&] [s2; Returns OS specific working area for the widget `- this is rectangle diff --git a/uppsrc/CtrlLib/ChWin32.cpp b/uppsrc/CtrlLib/ChWin32.cpp index 8c7425a03..9178bb143 100644 --- a/uppsrc/CtrlLib/ChWin32.cpp +++ b/uppsrc/CtrlLib/ChWin32.cpp @@ -665,7 +665,7 @@ void ChSysInit() } } - if(IsSystemThemeDark() && !IsDark(Color::FromCR(GetSysColor(COLOR_WINDOW)))) + if(Ctrl::IsDarkThemeEnabled() && IsSystemThemeDark() && !IsDark(Color::FromCR(GetSysColor(COLOR_WINDOW)))) sEmulateDarkTheme = true; NONCLIENTMETRICS ncm;