Merge pull request #2844 from RaiKoHoff/Dev_NewFeatures

Need to separate DarkMode window-backgr color from button-face color
This commit is contained in:
Rainer Kottenhoff 2020-09-17 17:38:27 +02:00 committed by GitHub
commit 39774c3b43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 30 deletions

View File

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

View File

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

View File

@ -20,9 +20,9 @@
#ifdef D_NP3_WIN10_DARK_MODE
#include "IatHook.hpp"
#include "ListViewUtil.hpp"
#endif
#include "ListViewUtil.hpp"
// ============================================================================

View File

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

View File

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

View File

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

View File

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