mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-28 21:02:59 +08:00
Merge pull request #2844 from RaiKoHoff/Dev_NewFeatures
Need to separate DarkMode window-backgr color from button-face color
This commit is contained in:
commit
39774c3b43
@ -59,6 +59,7 @@ SettingsVersion=4
|
||||
;ZoomTooltipTimeout=3200
|
||||
;LargeIconScalePrecent=150
|
||||
;DarkModeBkgColor=0x1F1F1F;
|
||||
;DarkModeBtnFaceColor=0x333333
|
||||
;DarkModeTxtColor=0xEFEFEF;
|
||||
[Statusbar Settings]
|
||||
;VisibleSections=0 1 12 14 2 4 5 6 7 8 9 10 11
|
||||
|
||||
@ -1039,8 +1039,6 @@ extern "C" bool CreateIniFile(LPCWSTR pszIniFilePath, DWORD* pdwFileSize_out)
|
||||
//
|
||||
void LoadSettings()
|
||||
{
|
||||
WCHAR wchBuffer[MIDSZ_BUFFER] = { L'\0' };
|
||||
|
||||
CFG_VERSION const _ver = StrIsEmpty(Globals.IniFile) ? CFG_VER_CURRENT : CFG_VER_NONE;
|
||||
|
||||
bool bDirtyFlag = false; // do we have to save the file on done
|
||||
@ -1310,9 +1308,12 @@ void LoadSettings()
|
||||
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
|
||||
unsigned int iValue = 0;
|
||||
WCHAR color[32] = { L'\0' };
|
||||
Defaults2.DarkModeBkgColor = rgbDarkColorBkgRef;
|
||||
WCHAR wchBuffer[MIDSZ_BUFFER] = { L'\0' };
|
||||
|
||||
Defaults2.DarkModeBkgColor = rgbDarkBkgColorRef;
|
||||
StringCchPrintf(color, COUNTOF(color), L"%#08x", Defaults2.DarkModeBkgColor);
|
||||
IniSectionGetString(IniSecSettings2, L"DarkModeBkgColor", color, wchBuffer, COUNTOF(wchBuffer));
|
||||
if (swscanf_s(wchBuffer, L"%x", &iValue) == 1) {
|
||||
@ -1323,9 +1324,22 @@ void LoadSettings()
|
||||
if (Globals.hbrDarkModeBkgBrush) {
|
||||
DeleteObject(Globals.hbrDarkModeBkgBrush);
|
||||
}
|
||||
if (Globals.hbrDarkModeBtnFcBrush) {
|
||||
DeleteObject(Globals.hbrDarkModeBtnFcBrush);
|
||||
}
|
||||
Globals.hbrDarkModeBkgBrush = CreateSolidBrush(Settings2.DarkModeBkgColor);
|
||||
|
||||
Defaults2.DarkModeTxtColor = rgbDarkColorTxtRef;
|
||||
Defaults2.DarkModeBtnFaceColor = rgbDarkBtnFcColorRef;
|
||||
StringCchPrintf(color, COUNTOF(color), L"%#08x", Defaults2.DarkModeBtnFaceColor);
|
||||
IniSectionGetString(IniSecSettings2, L"DarkModeBtnFaceColor", color, wchBuffer, COUNTOF(wchBuffer));
|
||||
if (swscanf_s(wchBuffer, L"%x", &iValue) == 1) {
|
||||
Settings2.DarkModeBtnFaceColor = RGB((iValue & 0xFF0000) >> 16, (iValue & 0xFF00) >> 8, iValue & 0xFF);
|
||||
} else {
|
||||
Settings2.DarkModeBtnFaceColor = Defaults2.DarkModeBtnFaceColor;
|
||||
}
|
||||
Globals.hbrDarkModeBtnFcBrush = CreateSolidBrush(Settings2.DarkModeBtnFaceColor);
|
||||
|
||||
Defaults2.DarkModeTxtColor = rgbDarkTxtColorRef;
|
||||
StringCchPrintf(color, COUNTOF(color), L"%#08x", Defaults2.DarkModeTxtColor);
|
||||
IniSectionGetString(IniSecSettings2, L"DarkModeTxtColor", color, wchBuffer, COUNTOF(wchBuffer));
|
||||
if (swscanf_s(wchBuffer, L"%x", &iValue) == 1) {
|
||||
@ -1333,6 +1347,7 @@ void LoadSettings()
|
||||
} else {
|
||||
Settings2.DarkModeTxtColor = Defaults2.DarkModeTxtColor;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
@ -20,9 +20,9 @@
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
#include "IatHook.hpp"
|
||||
#include "ListViewUtil.hpp"
|
||||
#endif
|
||||
|
||||
#include "ListViewUtil.hpp"
|
||||
|
||||
// ============================================================================
|
||||
|
||||
|
||||
@ -192,29 +192,52 @@ inline bool StrIsEmptyW(LPCWSTR s) { return (!s || (*s == L'\0')); }
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
inline COLORREF GetBackgroundColor(HWND hwnd) { return GetBkColor(GetDC(hwnd)); }
|
||||
//inline COLORREF GetBackgroundColor(HWND hwnd) { return GetBkColor(GetDC(hwnd)); }
|
||||
|
||||
|
||||
inline int SetModeBkColor(const HDC hdc, const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
return SetBkColor(hdc, bDarkMode ? Settings2.DarkModeBkgColor : GetSysColor(COLOR_BTNFACE));
|
||||
return SetBkColor(hdc, bDarkMode ? Settings2.DarkModeBkgColor : GetSysColor(COLOR_WINDOW));
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return SetBkColor(hdc, GetSysColor(COLOR_WINDOW));
|
||||
#endif
|
||||
}
|
||||
|
||||
inline int SetModeBtnFaceColor(const HDC hdc, const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
return SetBkColor(hdc, bDarkMode ? Settings2.DarkModeBtnFaceColor : GetSysColor(COLOR_BTNFACE));
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return SetBkColor(hdc, GetSysColor(COLOR_BTNFACE));
|
||||
#endif
|
||||
}
|
||||
|
||||
inline COLORREF GetModeBkColor(const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
return bDarkMode ? Settings2.DarkModeBkgColor : (COLORREF)(
|
||||
IsWindows10OrGreater() ? GetSysColor(COLOR_WINDOW) : GetSysColor(COLOR_BTNFACE));
|
||||
return bDarkMode ? Settings2.DarkModeBkgColor : (COLORREF)GetSysColor(COLOR_WINDOW);
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return (COLORREF)GetSysColor(COLOR_WINDOW);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline COLORREF GetModeBtnfaceColor(const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
return bDarkMode ? Settings2.DarkModeBtnFaceColor : (COLORREF)(
|
||||
IsWindows10OrGreater() ? GetSysColor(COLOR_WINDOW) : GetSysColor(COLOR_BTNFACE)); // (!) Win10 case
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return (COLORREF)GetSysColor(COLOR_BTNFACE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
inline int SetModeTextColor(const HDC hdc, const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
return SetTextColor(hdc, bDarkMode ? Settings2.DarkModeTxtColor : GetSysColor(COLOR_BTNTEXT));
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return SetTextColor(hdc, GetSysColor(COLOR_BTNTEXT));
|
||||
#endif
|
||||
}
|
||||
@ -224,6 +247,7 @@ inline COLORREF GetModeTextColor(const bool bDarkMode) {
|
||||
return bDarkMode ? Settings2.DarkModeTxtColor : (COLORREF)(
|
||||
IsWindows10OrGreater() ? GetSysColor(COLOR_WINDOWTEXT) : GetSysColor(COLOR_BTNTEXT));
|
||||
#else
|
||||
UNUSED(bDarkMode);
|
||||
return (COLORREF)GetSysColor(COLOR_BTNTEXT);
|
||||
#endif
|
||||
}
|
||||
@ -232,7 +256,7 @@ inline COLORREF GetModeTextColor(const bool bDarkMode) {
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
|
||||
inline INT_PTR SetDarkModeCtlColors(const HDC hdc) {
|
||||
SetBkColor(hdc, Settings2.DarkModeBkgColor);
|
||||
SetBkColor(hdc, Settings2.DarkModeBkgColor); // (!) non-button static controls
|
||||
SetTextColor(hdc, Settings2.DarkModeTxtColor);
|
||||
//~RECT rc;
|
||||
//~GetWindowRect(WindowFromDC(hdc), &rc);
|
||||
@ -240,13 +264,6 @@ inline INT_PTR SetDarkModeCtlColors(const HDC hdc) {
|
||||
return (INT_PTR)Globals.hbrDarkModeBkgBrush;
|
||||
}
|
||||
|
||||
inline void SetModeCtlColors(HWND hwnd, const bool bDarkMode) {
|
||||
HDC const hdc = GetDC(hwnd);
|
||||
SetBkColor(hdc, bDarkMode ? Settings2.DarkModeBkgColor : GetSysColor(COLOR_BTNFACE));
|
||||
SetTextColor(hdc, bDarkMode ? Settings2.DarkModeTxtColor : GetSysColor(COLOR_BTNTEXT));
|
||||
ReleaseDC(hwnd, hdc);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@ -1311,7 +1311,11 @@ bool InitApplication(const HINSTANCE hInstance)
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = Globals.hDlgIcon256;
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
wc.hbrBackground = UseDarkMode() ? Globals.hbrDarkModeBkgBrush : (HBRUSH)(COLOR_WINDOW + 1);
|
||||
#else
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
#endif
|
||||
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MUI_MAINMENU);
|
||||
wc.lpszClassName = s_wchWndClass;
|
||||
|
||||
@ -2699,7 +2703,7 @@ void CreateBars(HWND hwnd, HINSTANCE hInstance)
|
||||
rbBand.hbmBack = NULL;
|
||||
rbBand.lpText = L"Toolbar";
|
||||
rbBand.clrFore = GetModeTextColor(UseDarkMode());
|
||||
rbBand.clrBack = GetModeBkColor(UseDarkMode());
|
||||
rbBand.clrBack = GetModeBtnfaceColor(UseDarkMode());
|
||||
rbBand.hwndChild = Globals.hwndToolbar;
|
||||
rbBand.cxMinChild = (rc.right - rc.left) * COUNTOF(s_tbbMainWnd);
|
||||
rbBand.cyMinChild = (rc.bottom - rc.top) + (2 * rc.top);
|
||||
@ -2737,7 +2741,6 @@ void CreateBars(HWND hwnd, HINSTANCE hInstance)
|
||||
if (IsDarkModeSupported()) {
|
||||
AllowDarkModeForWindow(Globals.hwndStatus, CheckDarkModeEnabled());
|
||||
}
|
||||
//SetModeCtlColors(Globals.hwndStatus, UseDarkMode());
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -2966,11 +2969,12 @@ LRESULT MsgDrawItem(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
//~PAINTSTRUCT ps;
|
||||
//~BeginPaint(hWndItem, &ps); ~ not needed on WM_DRAWITEM
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
|
||||
SetModeBkColor(hdc, UseDarkMode());
|
||||
//~SetModeBkColor(hdc, UseDarkMode());
|
||||
SetModeBtnFaceColor(hdc, UseDarkMode());
|
||||
SetModeTextColor(hdc, UseDarkMode());
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
|
||||
if (UseDarkMode()) {
|
||||
// overpaint part frames
|
||||
HWND const hWndItem = pDIS->hwndItem;
|
||||
@ -2978,7 +2982,7 @@ LRESULT MsgDrawItem(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HDC const hdcFrm = GetWindowDC(hWndItem);
|
||||
RECT rcf = rc;
|
||||
for (int i = 1; i < bdh; ++i) {
|
||||
FrameRect(hdcFrm, &rcf, Globals.hbrDarkModeBkgBrush);
|
||||
FrameRect(hdcFrm, &rcf, Globals.hbrDarkModeBtnFcBrush);
|
||||
rcf.left -= 1;
|
||||
rcf.top -= 1;
|
||||
rcf.bottom += 1;
|
||||
@ -2995,7 +2999,7 @@ LRESULT MsgDrawItem(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
//~EndPaint(hWndItem, &ps);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -1817,16 +1817,16 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) // iStyle = STYLE_LINENUMBER
|
||||
{
|
||||
Style_SetStyles(hwnd, STYLE_LINENUMBER, lpszStyle, false); // line numbers
|
||||
|
||||
COLORREF clrBack = GetModeBkColor(UseDarkMode());
|
||||
COLORREF clrBack;
|
||||
if (!Style_StrGetColor(lpszStyle, BACKGROUND_LAYER, &clrBack, false)) {
|
||||
clrBack = UseDarkMode() ? (clrBack + RGB(0x10, 0x10, 0x10)) : GetSysColor(COLOR_BTNFACE);
|
||||
clrBack = GetModeBtnfaceColor(UseDarkMode());
|
||||
}
|
||||
SciCall_StyleSetBack(STYLE_LINENUMBER, clrBack);
|
||||
SciCall_SetMarginBackN(MARGIN_SCI_LINENUM, clrBack);
|
||||
SciCall_SetMarginSensitiveN(MARGIN_SCI_LINENUM, false); // allow selection drag
|
||||
//~SciCall_SetMarginBackN(MARGIN_SCI_LINENUM, clrBack);
|
||||
|
||||
COLORREF clrFore = SciCall_StyleGetFore(STYLE_LINENUMBER);
|
||||
COLORREF clrFore;
|
||||
Style_StrGetColor(lpszStyle, FOREGROUND_LAYER, &clrFore, true);
|
||||
|
||||
// CallTips
|
||||
|
||||
@ -247,9 +247,9 @@ typedef struct _cmq
|
||||
#define rgbRedColorRef (RGB(255, 170, 170))
|
||||
#define rgbGreenColorRef (RGB(170, 255, 170))
|
||||
#define rgbBlueColorRef (RGB(170, 200, 255))
|
||||
#define rgbBlueColorRef (RGB(170, 200, 255))
|
||||
#define rgbDarkColorBkgRef (RGB(0x1F, 0x1F, 0x1F))
|
||||
#define rgbDarkColorTxtRef (RGB(0xEF, 0xEF, 0xEF))
|
||||
#define rgbDarkBkgColorRef (RGB(0x1F, 0x1F, 0x1F))
|
||||
#define rgbDarkBtnFcColorRef (RGB(0x33, 0x33, 0x33))
|
||||
#define rgbDarkTxtColorRef (RGB(0xEF, 0xEF, 0xEF))
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
@ -386,6 +386,7 @@ typedef struct _globals_t
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
HBRUSH hbrDarkModeBkgBrush;
|
||||
HBRUSH hbrDarkModeBtnFcBrush;
|
||||
#endif
|
||||
|
||||
FR_STATES FindReplaceMatchFoundState;
|
||||
@ -587,6 +588,7 @@ typedef struct _settings2_t
|
||||
|
||||
#ifdef D_NP3_WIN10_DARK_MODE
|
||||
COLORREF DarkModeBkgColor;
|
||||
COLORREF DarkModeBtnFaceColor;
|
||||
COLORREF DarkModeTxtColor;
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user