+chg: Keep Dark/Light Win Mode settings (if once set manually - else auto detect)

This commit is contained in:
METANEOCORTEX\Kotti 2023-04-27 16:10:03 +02:00
parent 520df93974
commit 628c22405a
4 changed files with 22 additions and 13 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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 {