From 628c22405aefc33b6c5316ff3f375dd6d2faf249 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Thu, 27 Apr 2023 16:10:03 +0200 Subject: [PATCH] +chg: Keep Dark/Light Win Mode settings (if once set manually - else auto detect) --- src/Config/Config.cpp | 7 +++---- src/EncodingDetection.cpp | 8 ++++---- src/Notepad3.c | 8 ++++---- src/TypeDefs.h | 12 +++++++++++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 1998351d5..60682d7a2 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1652,8 +1652,7 @@ void LoadSettings() Globals.fvCurFile.iEncoding = Settings.DefaultEncoding; #ifdef D_NP3_WIN10_DARK_MODE - Defaults.WinThemeDarkMode = ShouldAppsUseDarkModeEx(); - Settings.WinThemeDarkMode = IniSectionGetBool(IniSecSettings, L"WinThemeDarkMode", Defaults.WinThemeDarkMode) && IsDarkModeSupported(); + GET_CAST_INT_VALUE_FROM_INISECTION(WIN_DISPL_MODE, WinThemeDarkMode, 0, 0, 2); #endif GET_BOOL_VALUE_FROM_INISECTION(UseDefaultForFileEncoding, false); @@ -1669,7 +1668,7 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(FixTrailingBlanks, false); GET_INT_VALUE_FROM_INISECTION(PrintHeader, 1, 0, 3); GET_INT_VALUE_FROM_INISECTION(PrintFooter, 0, 0, 1); - int const defPrtColMod = Settings.WinThemeDarkMode ? SC_PRINT_INVERTLIGHT : SC_PRINT_COLOURONWHITE; + int const defPrtColMod = IsSettingDarkMode() ? SC_PRINT_INVERTLIGHT : SC_PRINT_COLOURONWHITE; GET_INT_VALUE_FROM_INISECTION(PrintColorMode, defPrtColMod, SC_PRINT_NORMAL, SC_PRINT_SCREENCOLOURS); //int const zoomScale = 100; @@ -2147,7 +2146,7 @@ static bool _SaveSettings(bool bForceSaveSettings) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ReplaceByClipboardTag); #ifdef D_NP3_WIN10_DARK_MODE - SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, WinThemeDarkMode); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, WinThemeDarkMode); #endif ///~IniSectionSetInt(IniSecSettings, L"IMEInteraction", Settings2.IMEInteraction); diff --git a/src/EncodingDetection.cpp b/src/EncodingDetection.cpp index eff40d088..64f9f4d8a 100644 --- a/src/EncodingDetection.cpp +++ b/src/EncodingDetection.cpp @@ -963,14 +963,14 @@ static void _SetEncodingTitleInfo(const ENC_DET_T* pEncDetInfo) // static void _SetFileVars(char* buffer, size_t cch, LPFILEVARS lpfv) { - bool bDisableFileVar = Flags.NoFileVariables; + bool bEnableFileVar = !Flags.NoFileVariables; - if (!bDisableFileVar) { + if (bEnableFileVar) { int i; if (FileVars_ParseInt(buffer, "enable-local-variables", &i) && (!i)) { - bDisableFileVar = true; + bEnableFileVar = false; } - if (!bDisableFileVar) { + if (bEnableFileVar) { if (FileVars_ParseInt(buffer, "tab-width", &i)) { lpfv->iTabWidth = clampi(i, 1, 256); diff --git a/src/Notepad3.c b/src/Notepad3.c index 23754b03a..ce3ef4684 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1129,7 +1129,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, Scintilla_RegisterClasses(hInstance); #ifdef D_NP3_WIN10_DARK_MODE - SetDarkMode(IsDarkModeSupported() && Settings.WinThemeDarkMode); // settings + SetDarkMode(IsDarkModeSupported() && IsSettingDarkMode()); // settings #endif HRSRC const hRes = FindResourceEx(hInstance, RT_RCDATA, MAKEINTRESOURCE(IDR_STD_DARKMODE_THEME), @@ -4320,7 +4320,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) #ifdef D_NP3_WIN10_DARK_MODE EnableCmd(hmenu, IDM_VIEW_WIN_DARK_MODE, IsDarkModeSupported()); - CheckCmd(hmenu, IDM_VIEW_WIN_DARK_MODE, Settings.WinThemeDarkMode); + CheckCmd(hmenu, IDM_VIEW_WIN_DARK_MODE, IsSettingDarkMode()); #else RemoveMenu(hmenu, IDM_VIEW_WIN_DARK_MODE, 0); #endif @@ -6421,8 +6421,8 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; } - Settings.WinThemeDarkMode = !Settings.WinThemeDarkMode; // toggle - SetDarkMode(Settings.WinThemeDarkMode); + Settings.WinThemeDarkMode = IsSettingDarkMode() ? WINDSPMOD_LIGHT : WINDSPMOD_DARK; // toggle non auto! + SetDarkMode(IsSettingDarkMode()); Style_DynamicThemesMenuCmd(IDM_THEMES_FACTORY_RESET); diff --git a/src/TypeDefs.h b/src/TypeDefs.h index a04050f49..f4786ab77 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -220,6 +220,7 @@ typedef enum BUFFER_SIZES { typedef enum FR_STATES { FND_NOP = 0, NXT_NOT_FND, NXT_FND, NXT_WRP_FND, PRV_NOT_FND, PRV_FND, PRV_WRP_FND } FR_STATES; typedef enum FR_UPD_MODES { FRMOD_IGNORE = 0, FRMOD_NORM, FRMOD_WRAPED } FR_UPD_MODES; +typedef enum WIN_DISPL_MODE { WINDSPMOD_AUTO = 0, WINDSPMOD_DARK, WINDSPMOD_LIGHT } WIN_DISPL_MODE; //==== Statusbar ============================================================== @@ -676,7 +677,7 @@ typedef struct SETTINGS_T { AutoSaveBackupOptions AutoSaveOptions; #ifdef D_NP3_WIN10_DARK_MODE - bool WinThemeDarkMode; + WIN_DISPL_MODE WinThemeDarkMode; // auto(0), true(1), false(2) #endif RECT PrintMargin; @@ -696,6 +697,15 @@ extern SETTINGS_T Settings; #define IsFocusedViewAllowed() (IsMarkOccurrencesEnabled() && !Settings.MarkOccurrencesMatchVisible) #define IsColorDefHotspotEnabled() (Settings.ColorDefHotspot != 0) +//inline bool IsSettingDarkMode() +//{ +// return ((Settings.WinThemeDarkMode == WINDSPMOD_AUTO) ? ShouldAppsUseDarkModeEx() : ((Settings.WinThemeDarkMode == WINDSPMOD_DARK) ? true : false)); +//} + +#define IsSettingDarkMode() (((Settings.WinThemeDarkMode == WINDSPMOD_AUTO) ? \ + ShouldAppsUseDarkModeEx() : \ + ((Settings.WinThemeDarkMode == WINDSPMOD_DARK) ? true : false)) && IsDarkModeSupported()) + //============================================================================= typedef struct FLAGS_T {