Merge pull request #2872 from RaiKoHoff/Dev_NewFeatures

DarkMode switching while non-modal dialogs are active
This commit is contained in:
Rainer Kottenhoff 2020-09-22 12:04:35 +02:00 committed by GitHub
commit 60771aa61f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 130 additions and 179 deletions

View File

@ -72,7 +72,7 @@ extern "C" void InitListView(HWND hListView)
SendMessage(hHeader, WM_THEMECHANGED, wParam, lParam);
RedrawWindow(hWnd, nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE);
RedrawWindow(hWnd, nullptr, nullptr, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_INTERNALPAINT);
}
}
break;
@ -145,7 +145,7 @@ extern "C" void InitTreeView(HWND hTreeView)
}
CloseThemeData(hTheme);
}
RedrawWindow(hWnd, nullptr, nullptr, RDW_FRAME | RDW_INVALIDATE);
RedrawWindow(hWnd, nullptr, nullptr, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_INTERNALPAINT);
}
}
break;

View File

@ -85,10 +85,6 @@ static LRESULT CALLBACK SetPosRelatedToParent_Hook(INT nCode, WPARAM wParam, LPA
SetDialogIconNP3(hThisWnd);
InitWindowCommon(hThisWnd, true);
//HDC const hdc = GetDC(hThisWnd);
//SetDarkModeCtlColors(hdc);
//ReleaseDC(hThisWnd, hdc);
// get window handles
LPCREATESTRUCT const pCreateStructure = ((LPCBT_CREATEWND)lParam)->lpcs;
HWND const hParentWnd = pCreateStructure->hwndParent; // GetParent(hThisWnd);
@ -336,9 +332,7 @@ static INT_PTR CALLBACK _InfoBoxLngDlgProc(HWND hwnd, UINT umsg, WPARAM wParam,
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -361,7 +355,7 @@ static INT_PTR CALLBACK _InfoBoxLngDlgProc(HWND hwnd, UINT umsg, WPARAM wParam,
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -587,9 +581,7 @@ static INT_PTR CALLBACK CmdLineHelpProc(HWND hwnd, UINT umsg, WPARAM wParam, LPA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -611,7 +603,7 @@ static INT_PTR CALLBACK CmdLineHelpProc(HWND hwnd, UINT umsg, WPARAM wParam, LPA
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -976,9 +968,7 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam
// return TRUE;
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
@ -1002,7 +992,7 @@ INT_PTR CALLBACK AboutDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -1215,9 +1205,7 @@ static INT_PTR CALLBACK RunDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM l
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -1238,7 +1226,7 @@ static INT_PTR CALLBACK RunDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM l
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -1472,9 +1460,7 @@ static INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -1497,7 +1483,7 @@ static INT_PTR CALLBACK OpenWithDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
}
SendMessage(hwndLV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -1718,10 +1704,8 @@ static INT_PTR CALLBACK FavoritesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
break;
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
if (IsDarkModeSupported() && IsColorSchemeChangeMessage(lParam)) {
@ -1743,7 +1727,7 @@ static INT_PTR CALLBACK FavoritesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
}
SendMessage(hwndLV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -1923,9 +1907,7 @@ static INT_PTR CALLBACK AddToFavDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -1946,7 +1928,7 @@ static INT_PTR CALLBACK AddToFavDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPA
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -2244,9 +2226,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -2269,7 +2249,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPAR
}
SendMessage(hwndLV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -2617,9 +2597,7 @@ static INT_PTR CALLBACK ChangeNotifyDlgProc(HWND hwnd, UINT umsg, WPARAM wParam,
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -2640,7 +2618,7 @@ static INT_PTR CALLBACK ChangeNotifyDlgProc(HWND hwnd, UINT umsg, WPARAM wParam,
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -2747,9 +2725,7 @@ static INT_PTR CALLBACK ColumnWrapDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, L
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -2770,7 +2746,7 @@ static INT_PTR CALLBACK ColumnWrapDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, L
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -2897,9 +2873,7 @@ static INT_PTR CALLBACK WordWrapSettingsDlgProc(HWND hwnd, UINT umsg, WPARAM wPa
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -2920,7 +2894,7 @@ static INT_PTR CALLBACK WordWrapSettingsDlgProc(HWND hwnd, UINT umsg, WPARAM wPa
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3046,9 +3020,7 @@ static INT_PTR CALLBACK LongLineSettingsDlgProc(HWND hwnd, UINT umsg, WPARAM wPa
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3069,7 +3041,7 @@ static INT_PTR CALLBACK LongLineSettingsDlgProc(HWND hwnd, UINT umsg, WPARAM wPa
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3213,9 +3185,7 @@ static INT_PTR CALLBACK TabSettingsDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3236,7 +3206,7 @@ static INT_PTR CALLBACK TabSettingsDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPA
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3395,9 +3365,7 @@ static INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wP
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3418,7 +3386,7 @@ static INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wP
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3637,9 +3605,7 @@ static INT_PTR CALLBACK SelectEncodingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3662,7 +3628,7 @@ static INT_PTR CALLBACK SelectEncodingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,
}
SendMessage(hwndLV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3848,9 +3814,7 @@ static INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wP
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3871,7 +3835,7 @@ static INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wP
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -3976,9 +3940,7 @@ static INT_PTR CALLBACK WarnLineEndingDlgProc(HWND hwnd, UINT umsg, WPARAM wPara
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3999,7 +3961,7 @@ static INT_PTR CALLBACK WarnLineEndingDlgProc(HWND hwnd, UINT umsg, WPARAM wPara
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -4123,9 +4085,7 @@ static INT_PTR CALLBACK WarnIndentationDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -4146,7 +4106,7 @@ static INT_PTR CALLBACK WarnIndentationDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;

View File

@ -28,6 +28,9 @@
#define SetExplorerTheme(hwnd) SetWindowTheme((hwnd), L"Explorer", NULL)
#define UpdateWindowEx(hwnd) /* UpdateWindow(hwnd) */ \
RedrawWindow((hwnd), NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_INTERNALPAINT /* | RDW_UPDATENOW */)
// ----------------------------------------------------------------------------
INT_PTR DisplayCmdLineHelp(HWND hwnd);

View File

@ -5796,6 +5796,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
sg_pefrData->bStateChanged = true; // force update
DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, sg_pefrData->bMarkOccurences);
PostMessage(hwnd, WM_THEMECHANGED, 0, 0);
}
return TRUE; // (!) further processing
@ -5889,9 +5891,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
//~case WM_CTLCOLOREDIT:
//~case WM_CTLCOLORLISTBOX:
case WM_CTLCOLORSTATIC:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -5905,24 +5905,22 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
bool const darkModeEnabled = CheckDarkModeEnabled();
AllowDarkModeForWindow(hwnd, darkModeEnabled);
RefreshTitleBarThemeColor(hwnd);
int const buttons[] = { IDOK, IDCANCEL, IDC_FINDPREV, IDC_REPLACE, IDC_SWAPSTRG,
IDC_REPLACEALL, IDC_REPLACEINSEL, IDC_TOGGLE_VISIBILITY };
for (int i = 0; i < COUNTOF(buttons); ++i) {
HWND const hBtn = GetDlgItem(hwnd, buttons[i]);
int const ctlx[] = { IDOK, IDCANCEL, IDC_FINDPREV, IDC_REPLACE, IDC_SWAPSTRG,
IDC_REPLACEALL, IDC_REPLACEINSEL, IDC_TOGGLE_VISIBILITY };
for (int i = 0; i < COUNTOF(ctlx); ++i) {
HWND const hBtn = GetDlgItem(hwnd, ctlx[i]);
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
#endif
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
{
if (sg_pefrData->bMarkOccurences)
{
case WM_CTLCOLORLISTBOX: {
if (sg_pefrData->bMarkOccurences) {
HWND hCheck = (HWND)lParam;
HDC hDC = (HDC)wParam;
@ -5955,13 +5953,12 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
return hBrush;
}
}
#ifdef D_NP3_WIN10_DARK_MODE
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
#endif
}
#ifdef D_NP3_WIN10_DARK_MODE
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
#else
return FALSE;
#endif
case WM_ACTIVATE:
@ -7992,9 +7989,7 @@ static INT_PTR CALLBACK EditLinenumDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -8015,7 +8010,7 @@ static INT_PTR CALLBACK EditLinenumDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPA
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -8217,8 +8212,7 @@ static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
{
DWORD const dwId = GetWindowLong((HWND)lParam, GWL_ID);
HDC const hdc = (HDC)wParam;
INT_PTR const hbrReturn = UseDarkMode() ? SetDarkModeCtlColors(hdc) :
(INT_PTR)GetSysColorBrush(COLOR_BTNFACE);
INT_PTR const hbrReturn = SetDarkModeCtlColors(hdc, UseDarkMode());
if (dwId >= 200 && dwId <= 205) {
SetBkMode(hdc, TRANSPARENT);
if (GetSysColorBrush(COLOR_HOTLIGHT)) {
@ -8251,7 +8245,7 @@ static INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -8418,9 +8412,7 @@ static INT_PTR CALLBACK EditAlignDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -8441,7 +8433,7 @@ static INT_PTR CALLBACK EditAlignDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARA
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -8543,9 +8535,7 @@ static INT_PTR CALLBACK EditEncloseSelectionDlgProc(HWND hwnd,UINT umsg,WPARAM w
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -8566,7 +8556,7 @@ static INT_PTR CALLBACK EditEncloseSelectionDlgProc(HWND hwnd,UINT umsg,WPARAM w
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -8673,9 +8663,7 @@ static INT_PTR CALLBACK EditInsertTagDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,L
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -8696,7 +8684,7 @@ static INT_PTR CALLBACK EditInsertTagDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,L
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -8915,9 +8903,7 @@ static INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
//}
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -8938,7 +8924,7 @@ static INT_PTR CALLBACK EditSortDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;

View File

@ -170,9 +170,10 @@ inline COLORREF CalcContrastColor(COLORREF rgb, int alpha) {
// ----------------------------------------------------------------------------
#define SendWMCommandEx(hwnd, id, extra) SendMessage((hwnd), WM_COMMAND, MAKEWPARAM((id), (extra)), 0)
#define SendWMCommand(hwnd, id) SendWMCommandEx((hwnd), (id), 1)
#define PostWMCommand(hwnd, id) PostMessage((hwnd), WM_COMMAND, MAKEWPARAM((id), 1), 0)
#define SendWMCommandEx(hwnd, id, hi) SendMessage((hwnd), WM_COMMAND, MAKEWPARAM((id), (hi)), 0)
#define SendWMCommand(hwnd, id) SendWMCommandEx((hwnd), (id), 1)
#define PostWMCommandEx(hwnd, id, hi) PostMessage((hwnd), WM_COMMAND, MAKEWPARAM((id), (hi)), 0)
#define PostWMCommand(hwnd, id) PostWMCommandEx((hwnd), (id), 1)
#define SetWindowStyle(hwnd, style) SetWindowLong((hwnd), GWL_STYLE, (style))
#define SetWindowExStyle(hwnd, style) SetWindowLong((hwnd), GWL_EXSTYLE, (style))
@ -253,13 +254,12 @@ inline COLORREF GetModeTextColor(const bool bDarkMode) {
#ifdef D_NP3_WIN10_DARK_MODE
inline INT_PTR SetDarkModeCtlColors(const HDC hdc) {
SetBkColor(hdc, Settings2.DarkModeBkgColor); // (!) non-button static controls
SetTextColor(hdc, Settings2.DarkModeTxtColor);
//~RECT rc;
//~GetWindowRect(WindowFromDC(hdc), &rc);
//~DrawEdge(hdc, &rc, EDGE_RAISED, BF_FLAT | BF_MONO);
return (INT_PTR)Globals.hbrDarkModeBkgBrush;
inline INT_PTR SetDarkModeCtlColors(const HDC hdc, const bool bDarkMode) {
if (bDarkMode) {
SetBkColor(hdc, Settings2.DarkModeBkgColor);
SetTextColor(hdc, Settings2.DarkModeTxtColor);
}
return (INT_PTR)(bDarkMode ? Globals.hbrDarkModeBkgBrush : FALSE);
}
#endif

View File

@ -570,7 +570,7 @@ static void SetSaveNeeded()
{
if (!s_DocNeedSaving) {
s_DocNeedSaving = true;
UpdateTitleBar();
UpdateTitleBar(Globals.hwndMain);
}
UpdateToolbar();
@ -586,7 +586,7 @@ void SetSavePoint()
}
s_DocNeedSaving = false;
UpdateToolbar();
UpdateTitleBar();
UpdateTitleBar(Globals.hwndMain);
}
inline static bool GetDocModified() {
@ -2840,7 +2840,7 @@ LRESULT MsgThemeChanged(HWND hwnd, WPARAM wParam ,LPARAM lParam)
AllowDarkModeForWindow(hwnd, UseDarkMode());
RefreshTitleBarThemeColor(hwnd);
#endif
UpdateTitleBar();
UpdateTitleBar(hwnd);
// reinitialize edit frame
_HandleEditWndFrame();
@ -2873,10 +2873,10 @@ LRESULT MsgThemeChanged(HWND hwnd, WPARAM wParam ,LPARAM lParam)
UpdateToolbar();
UpdateStatusbar(true);
UpdateMarginWidth();
UpdateWindow(hwnd);
UpdateUI();
UpdateWindowEx(hwnd);
return FALSE;
}
@ -2943,7 +2943,7 @@ LRESULT MsgSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
UpdateToolbar();
UpdateStatusbar(true);
UpdateMarginWidth();
UpdateTitleBar();
UpdateTitleBar(hwnd);
return FALSE;
}
@ -5932,7 +5932,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
unsigned const iCurTheme = GetModeThemeIndex();
Settings.WinThemeDarkMode = !Settings.WinThemeDarkMode;
Settings.WinThemeDarkMode = !Settings.WinThemeDarkMode; // toggle
// hide/show bright menu strip on switching
if (Settings.ShowMenubar == Defaults.ShowMenubar) {
@ -5944,8 +5944,21 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
Style_DynamicThemesMenuCmd(GetModeThemeIndex() + IDM_THEMES_DEFAULT, iCurTheme);
COND_SHOW_ZOOM_CALLTIP();
if (IsWindow(Globals.hwndDlgFindReplace)) {
//~SendMessage(Globals.hwndDlgFindReplace, WM_THEMECHANGED, 0, 0); ~ (!) incomplete update
bool const isReplDlg = !!GetDlgItem(Globals.hwndDlgFindReplace, IDC_REPLACE);
PostWMCommand(hwnd, isReplDlg ? IDM_EDIT_FIND : IDM_EDIT_REPLACE); // swap
PostWMCommand(hwnd, isReplDlg ? IDM_EDIT_REPLACE : IDM_EDIT_FIND); // restore
}
if (IsWindow(Globals.hwndDlgCustomizeSchemes)) {
//~SendMessage(Globals.hwndDlgCustomizeSchemes, WM_CLOSE, 0, 0); ~ no need for restart
//~PostWMCommand(hwnd, IDM_VIEW_SCHEMECONFIG);
SendMessage(Globals.hwndDlgCustomizeSchemes, WM_THEMECHANGED, 0, 0);
UpdateTitleBar(Globals.hwndDlgCustomizeSchemes);
}
PostMessage(hwnd, WM_SETFOCUS, 0, 0);
PostMessage(hwnd, WM_THEMECHANGED, 0, 0);
}
break;
@ -5970,13 +5983,13 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_VIEW_SHOWFULLPATH:
Settings.PathNameFormat = iLoWParam - IDM_VIEW_SHOWFILENAMEONLY;
StringCchCopy(s_wchTitleExcerpt,COUNTOF(s_wchTitleExcerpt),L"");
UpdateTitleBar();
UpdateTitleBar(hwnd);
break;
case IDM_VIEW_SHOWEXCERPT:
EditGetExcerpt(Globals.hwndEdit,s_wchTitleExcerpt,COUNTOF(s_wchTitleExcerpt));
UpdateTitleBar();
UpdateTitleBar(hwnd);
break;
@ -6521,7 +6534,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case CMD_TOGGLETITLE:
EditGetExcerpt(Globals.hwndEdit,s_wchTitleExcerpt,COUNTOF(s_wchTitleExcerpt));
UpdateTitleBar();
UpdateTitleBar(hwnd);
break;
@ -9500,11 +9513,14 @@ void UpdateUI()
//
// UpdateTitleBar()
//
void UpdateTitleBar() {
SetWindowTitle(Globals.hwndMain, s_uidsAppTitle, s_bIsProcessElevated, IDS_MUI_UNTITLED, Globals.CurrentFile,
Settings.PathNameFormat, GetDocModified(), IDS_MUI_READONLY, s_bFileReadOnly, s_wchTitleExcerpt);
PostMessage(Globals.hwndMain, WM_NCACTIVATE, FALSE, -1);
PostMessage(Globals.hwndMain, WM_NCACTIVATE, TRUE, 0);
void UpdateTitleBar(const HWND hwnd)
{
if (hwnd == Globals.hwndMain) {
SetWindowTitle(Globals.hwndMain, s_uidsAppTitle, s_bIsProcessElevated, IDS_MUI_UNTITLED, Globals.CurrentFile,
Settings.PathNameFormat, GetDocModified(), IDS_MUI_READONLY, s_bFileReadOnly, s_wchTitleExcerpt);
}
PostMessage(hwnd, WM_NCACTIVATE, FALSE, -1); // (!)
PostMessage(hwnd, WM_NCACTIVATE, TRUE, 0);
}
@ -10301,10 +10317,10 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload,
InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_ERR_LOADFILE, PathFindFileName(szFilePath));
}
UpdateTitleBar();
UpdateToolbar();
UpdateMarginWidth();
UpdateStatusbar(true);
UpdateTitleBar(Globals.hwndMain);
return fSuccess;
}

View File

@ -131,7 +131,7 @@ void UpdateStatusbar(bool);
void UpdateMarginWidth();
void UpdateSaveSettingsCmds();
void UpdateMouseDWellTime();
void UpdateTitleBar();
void UpdateTitleBar(const HWND hwnd);
void UndoRedoRecordingStart();
void UndoRedoRecordingStop();

View File

@ -102,9 +102,7 @@ static UINT_PTR CALLBACK _LPPrintHookProc(HWND hwnd, UINT uiMsg, WPARAM wParam,
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -125,7 +123,7 @@ static UINT_PTR CALLBACK _LPPrintHookProc(HWND hwnd, UINT uiMsg, WPARAM wParam,
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;
@ -605,9 +603,7 @@ static UINT_PTR CALLBACK _LPSetupHookProc(HWND hwnd, UINT uiMsg, WPARAM wParam,
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -628,7 +624,7 @@ static UINT_PTR CALLBACK _LPSetupHookProc(HWND hwnd, UINT uiMsg, WPARAM wParam,
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;

View File

@ -348,9 +348,8 @@ void Style_DynamicThemesMenuCmd(int cmd, unsigned iCurThemeIdx)
UpdateToolbar();
UpdateStatusbar(true);
UpdateMarginWidth();
UpdateTitleBar();
UpdateTitleBar(Globals.hwndMain);
}
UpdateUI();
}
@ -1602,6 +1601,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew)
UpdateToolbar();
UpdateStatusbar(true);
UpdateMarginWidth();
//~UpdateUI();
}
@ -3257,9 +3257,7 @@ static INT_PTR CALLBACK Style_FontDialogHook(
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -3280,7 +3278,7 @@ static INT_PTR CALLBACK Style_FontDialogHook(
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hdlg);
UpdateWindowEx(hdlg);
}
break;
@ -4303,9 +4301,7 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -4327,8 +4323,9 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
SendMessage(hwndTV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
Style_ResetCurrentLexer(hwnd);
SendWMCommandEx(hwnd, IDC_STYLEEDIT, EN_CHANGE); // button color inlay
UpdateWindowEx(hwnd);
}
break;
#endif
@ -5009,9 +5006,7 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -5032,8 +5027,7 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
SendMessage(hwndLV, WM_THEMECHANGED, 0, 0);
UpdateWindow(hwnd);
UpdateWindowEx(hwnd);
}
break;

View File

@ -164,9 +164,7 @@ INT_PTR CALLBACK SetKeysDlgProc(HWND hDlg, UINT umsg, WPARAM wParam, LPARAM lPar
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET :
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -187,7 +185,7 @@ INT_PTR CALLBACK SetKeysDlgProc(HWND hDlg, UINT umsg, WPARAM wParam, LPARAM lPar
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hDlg);
UpdateWindowEx(hDlg);
}
break;
@ -334,9 +332,7 @@ INT_PTR CALLBACK GetKeysDlgProc(HWND hDlg, UINT umsg, WPARAM wParam, LPARAM lPar
#ifdef D_NP3_WIN10_DARK_MODE
CASE_WM_CTLCOLOR_SET:
if (UseDarkMode()) {
return SetDarkModeCtlColors((HDC)wParam);
}
return SetDarkModeCtlColors((HDC)wParam, UseDarkMode());
break;
case WM_SETTINGCHANGE:
@ -357,7 +353,7 @@ INT_PTR CALLBACK GetKeysDlgProc(HWND hDlg, UINT umsg, WPARAM wParam, LPARAM lPar
AllowDarkModeForWindow(hBtn, darkModeEnabled);
SendMessage(hBtn, WM_THEMECHANGED, 0, 0);
}
UpdateWindow(hDlg);
UpdateWindowEx(hDlg);
}
break;