Use edge colors in dark mode for listbox border

1. use edge colors in darkmode for edit control border.
2. tweaks to properly drawn listbox scrollbar, when using custom border.
3. disabled edge color to dark mode preference dialog.
4. use disabled edge color for disabled combobox.

Fix #11207, fix #11376, close #11756
This commit is contained in:
ozone10 2022-06-01 18:33:14 +02:00 committed by Don Ho
parent 2c0134ef5a
commit d65967deab
13 changed files with 348 additions and 31 deletions

View File

@ -913,6 +913,7 @@ The comments are here for explanation, it's not necessary to translate them.
<Item id="7124" name="Edge"/> <Item id="7124" name="Edge"/>
<Item id="7125" name="Link"/> <Item id="7125" name="Link"/>
<Item id="7126" name="Edge highlight"/> <Item id="7126" name="Edge highlight"/>
<Item id="7127" name="Edge disabled"/>
<Item id="7130" name="Reset"/> <Item id="7130" name="Reset"/>
<Item id="7135" name="Tones"/> <Item id="7135" name="Tones"/>
</DarkMode> </DarkMode>

View File

@ -526,6 +526,7 @@ enum Platform { PF_UNKNOWN, PF_X86, PF_X64, PF_IA64, PF_ARM64 };
// COLORREF linkText = 0; // COLORREF linkText = 0;
// COLORREF edge = 0; // COLORREF edge = 0;
// COLORREF hotEdge = 0; // COLORREF hotEdge = 0;
// COLORREF disabledEdge = 0;
// }; // };
// } // }
// //

View File

@ -111,7 +111,7 @@ intptr_t CALLBACK RegExtDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lPa
{ {
if (NppDarkMode::isEnabled()) if (NppDarkMode::isEnabled())
{ {
return NppDarkMode::onCtlColor(reinterpret_cast<HDC>(wParam)); return NppDarkMode::onCtlColorListbox(wParam, lParam);
} }
break; break;
} }

View File

@ -2712,6 +2712,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
currentColors->linkText = NppDarkMode::getLinkTextColor(); currentColors->linkText = NppDarkMode::getLinkTextColor();
currentColors->edge = NppDarkMode::getEdgeColor(); currentColors->edge = NppDarkMode::getEdgeColor();
currentColors->hotEdge = NppDarkMode::getHotEdgeColor(); currentColors->hotEdge = NppDarkMode::getHotEdgeColor();
currentColors->disabledEdge = NppDarkMode::getDisabledEdgeColor();
return static_cast<LRESULT>(true); return static_cast<LRESULT>(true);
} }

View File

@ -49,6 +49,7 @@ namespace NppDarkMode
HBRUSH edgeBrush = nullptr; HBRUSH edgeBrush = nullptr;
HBRUSH hotEdgeBrush = nullptr; HBRUSH hotEdgeBrush = nullptr;
HBRUSH disabledEdgeBrush = nullptr;
Brushes(const Colors& colors) Brushes(const Colors& colors)
: background(::CreateSolidBrush(colors.background)) : background(::CreateSolidBrush(colors.background))
@ -59,6 +60,7 @@ namespace NppDarkMode
, edgeBrush(::CreateSolidBrush(colors.edge)) , edgeBrush(::CreateSolidBrush(colors.edge))
, hotEdgeBrush(::CreateSolidBrush(colors.hotEdge)) , hotEdgeBrush(::CreateSolidBrush(colors.hotEdge))
, disabledEdgeBrush(::CreateSolidBrush(colors.disabledEdge))
{} {}
~Brushes() ~Brushes()
@ -71,6 +73,7 @@ namespace NppDarkMode
::DeleteObject(edgeBrush); edgeBrush = nullptr; ::DeleteObject(edgeBrush); edgeBrush = nullptr;
::DeleteObject(hotEdgeBrush); hotEdgeBrush = nullptr; ::DeleteObject(hotEdgeBrush); hotEdgeBrush = nullptr;
::DeleteObject(disabledEdgeBrush); disabledEdgeBrush = nullptr;
} }
void change(const Colors& colors) void change(const Colors& colors)
@ -83,6 +86,7 @@ namespace NppDarkMode
::DeleteObject(edgeBrush); ::DeleteObject(edgeBrush);
::DeleteObject(hotEdgeBrush); ::DeleteObject(hotEdgeBrush);
::DeleteObject(disabledEdgeBrush);
background = ::CreateSolidBrush(colors.background); background = ::CreateSolidBrush(colors.background);
softerBackground = ::CreateSolidBrush(colors.softerBackground); softerBackground = ::CreateSolidBrush(colors.softerBackground);
@ -92,6 +96,7 @@ namespace NppDarkMode
edgeBrush = ::CreateSolidBrush(colors.edge); edgeBrush = ::CreateSolidBrush(colors.edge);
hotEdgeBrush = ::CreateSolidBrush(colors.hotEdge); hotEdgeBrush = ::CreateSolidBrush(colors.hotEdge);
disabledEdgeBrush = ::CreateSolidBrush(colors.disabledEdge);
} }
}; };
@ -100,11 +105,13 @@ namespace NppDarkMode
HPEN darkerTextPen = nullptr; HPEN darkerTextPen = nullptr;
HPEN edgePen = nullptr; HPEN edgePen = nullptr;
HPEN hotEdgePen = nullptr; HPEN hotEdgePen = nullptr;
HPEN disabledEdgePen = nullptr;
Pens(const Colors& colors) Pens(const Colors& colors)
: darkerTextPen(::CreatePen(PS_SOLID, 1, colors.darkerText)) : darkerTextPen(::CreatePen(PS_SOLID, 1, colors.darkerText))
, edgePen(::CreatePen(PS_SOLID, 1, colors.edge)) , edgePen(::CreatePen(PS_SOLID, 1, colors.edge))
, hotEdgePen(::CreatePen(PS_SOLID, 1, colors.hotEdge)) , hotEdgePen(::CreatePen(PS_SOLID, 1, colors.hotEdge))
, disabledEdgePen(::CreatePen(PS_SOLID, 1, colors.disabledEdge))
{} {}
~Pens() ~Pens()
@ -112,6 +119,7 @@ namespace NppDarkMode
::DeleteObject(darkerTextPen); darkerTextPen = nullptr; ::DeleteObject(darkerTextPen); darkerTextPen = nullptr;
::DeleteObject(edgePen); edgePen = nullptr; ::DeleteObject(edgePen); edgePen = nullptr;
::DeleteObject(hotEdgePen); hotEdgePen = nullptr; ::DeleteObject(hotEdgePen); hotEdgePen = nullptr;
::DeleteObject(disabledEdgePen); disabledEdgePen = nullptr;
} }
void change(const Colors& colors) void change(const Colors& colors)
@ -119,10 +127,12 @@ namespace NppDarkMode
::DeleteObject(darkerTextPen); ::DeleteObject(darkerTextPen);
::DeleteObject(edgePen); ::DeleteObject(edgePen);
::DeleteObject(hotEdgePen); ::DeleteObject(hotEdgePen);
::DeleteObject(disabledEdgePen);
darkerTextPen = ::CreatePen(PS_SOLID, 1, colors.darkerText); darkerTextPen = ::CreatePen(PS_SOLID, 1, colors.darkerText);
edgePen = ::CreatePen(PS_SOLID, 1, colors.edge); edgePen = ::CreatePen(PS_SOLID, 1, colors.edge);
hotEdgePen = ::CreatePen(PS_SOLID, 1, colors.hotEdge); hotEdgePen = ::CreatePen(PS_SOLID, 1, colors.hotEdge);
disabledEdgePen = ::CreatePen(PS_SOLID, 1, colors.disabledEdge);
} }
}; };
@ -139,7 +149,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x646464), // edgeColor HEXRGB(0x646464), // edgeColor
HEXRGB(0x9B9B9B) // hotEdgeColor HEXRGB(0x9B9B9B), // hotEdgeColor
HEXRGB(0x484848) // disabledEdgeColor
}; };
// red tone // red tone
@ -154,7 +165,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x908080), // edgeColor HEXRGB(0x908080), // edgeColor
HEXRGB(0xBBABAB) // hotEdgeColor HEXRGB(0xBBABAB), // hotEdgeColor
HEXRGB(0x584848) // disabledEdgeColor
}; };
// green tone // green tone
@ -169,7 +181,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x809080), // edgeColor HEXRGB(0x809080), // edgeColor
HEXRGB(0xABBBAB) // hotEdgeColor HEXRGB(0xABBBAB), // hotEdgeColor
HEXRGB(0x485848) // disabledEdgeColor
}; };
// blue tone // blue tone
@ -184,7 +197,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x8080A0), // edgeColor HEXRGB(0x8080A0), // edgeColor
HEXRGB(0xABABCB) // hotEdgeColor HEXRGB(0xABABCB), // hotEdgeColor
HEXRGB(0x484868) // disabledEdgeColor
}; };
// purple tone // purple tone
@ -199,7 +213,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x9080A0), // edgeColor HEXRGB(0x9080A0), // edgeColor
HEXRGB(0xBBABCB) // hotEdgeColor HEXRGB(0xBBABCB), // hotEdgeColor
HEXRGB(0x584868) // disabledEdgeColor
}; };
// cyan tone // cyan tone
@ -214,7 +229,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x8090A0), // edgeColor HEXRGB(0x8090A0), // edgeColor
HEXRGB(0xBBBBCB) // hotEdgeColor HEXRGB(0xBBBBCB), // hotEdgeColor
HEXRGB(0x485868) // disabledEdgeColor
}; };
// olive tone // olive tone
@ -229,7 +245,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x909080), // edgeColor HEXRGB(0x909080), // edgeColor
HEXRGB(0xBBBBAB) // hotEdgeColor HEXRGB(0xBBBBAB), // hotEdgeColor
HEXRGB(0x585848) // disabledEdgeColor
}; };
// customized // customized
@ -244,7 +261,8 @@ namespace NppDarkMode
HEXRGB(0x808080), // disabledTextColor HEXRGB(0x808080), // disabledTextColor
HEXRGB(0xFFFF00), // linkTextColor HEXRGB(0xFFFF00), // linkTextColor
HEXRGB(0x646464), // edgeColor HEXRGB(0x646464), // edgeColor
HEXRGB(0x9B9B9B) // hotEdgeColor HEXRGB(0x9B9B9B), // hotEdgeColor
HEXRGB(0x484848) // disabledEdgeColor
}; };
ColorTone g_colorToneChoice = blackTone; ColorTone g_colorToneChoice = blackTone;
@ -467,6 +485,7 @@ namespace NppDarkMode
COLORREF getLinkTextColor() { return getTheme()._colors.linkText; } COLORREF getLinkTextColor() { return getTheme()._colors.linkText; }
COLORREF getEdgeColor() { return getTheme()._colors.edge; } COLORREF getEdgeColor() { return getTheme()._colors.edge; }
COLORREF getHotEdgeColor() { return getTheme()._colors.hotEdge; } COLORREF getHotEdgeColor() { return getTheme()._colors.hotEdge; }
COLORREF getDisabledEdgeColor() { return getTheme()._colors.disabledEdge; }
HBRUSH getBackgroundBrush() { return getTheme()._brushes.background; } HBRUSH getBackgroundBrush() { return getTheme()._brushes.background; }
HBRUSH getSofterBackgroundBrush() { return getTheme()._brushes.softerBackground; } HBRUSH getSofterBackgroundBrush() { return getTheme()._brushes.softerBackground; }
@ -476,10 +495,12 @@ namespace NppDarkMode
HBRUSH getEdgeBrush() { return getTheme()._brushes.edgeBrush; } HBRUSH getEdgeBrush() { return getTheme()._brushes.edgeBrush; }
HBRUSH getHotEdgeBrush() { return getTheme()._brushes.hotEdgeBrush; } HBRUSH getHotEdgeBrush() { return getTheme()._brushes.hotEdgeBrush; }
HBRUSH getDisabledEdgeBrush() { return getTheme()._brushes.disabledEdgeBrush; }
HPEN getDarkerTextPen() { return getTheme()._pens.darkerTextPen; } HPEN getDarkerTextPen() { return getTheme()._pens.darkerTextPen; }
HPEN getEdgePen() { return getTheme()._pens.edgePen; } HPEN getEdgePen() { return getTheme()._pens.edgePen; }
HPEN getHotEdgePen() { return getTheme()._pens.hotEdgePen; } HPEN getHotEdgePen() { return getTheme()._pens.hotEdgePen; }
HPEN getDisabledEdgePen() { return getTheme()._pens.disabledEdgePen; }
void setBackgroundColor(COLORREF c) void setBackgroundColor(COLORREF c)
{ {
@ -558,6 +579,13 @@ namespace NppDarkMode
getTheme().change(clrs); getTheme().change(clrs);
} }
void setDisabledEdgeColor(COLORREF c)
{
Colors clrs = getTheme()._colors;
clrs.disabledEdge = c;
getTheme().change(clrs);
}
Colors getDarkModeDefaultColors() Colors getDarkModeDefaultColors()
{ {
return darkColors; return darkColors;
@ -775,7 +803,7 @@ namespace NppDarkMode
::EnableDarkScrollBarForWindowAndChildren(hwnd); ::EnableDarkScrollBarForWindowAndChildren(hwnd);
} }
inline void paintRoundFrameRect(HDC hdc, const RECT rect, const HPEN hpen, int width, int height) void paintRoundFrameRect(HDC hdc, const RECT rect, const HPEN hpen, int width, int height)
{ {
auto holdBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH)); auto holdBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH));
auto holdPen = ::SelectObject(hdc, hpen); auto holdPen = ::SelectObject(hdc, hpen);
@ -1114,7 +1142,7 @@ namespace NppDarkMode
//DrawThemeParentBackground(hwnd, hdc, &rcClient); //DrawThemeParentBackground(hwnd, hdc, &rcClient);
//DrawThemeBackground(buttonData.hTheme, hdc, BP_GROUPBOX, iStateID, &rcBackground, nullptr); //DrawThemeBackground(buttonData.hTheme, hdc, BP_GROUPBOX, iStateID, &rcBackground, nullptr);
NppDarkMode::paintRoundFrameRect(hdc, rcBackground, NppDarkMode::getEdgePen(), 0, 0); NppDarkMode::paintRoundFrameRect(hdc, rcBackground, NppDarkMode::getEdgePen());
SelectClipRgn(hdc, nullptr); SelectClipRgn(hdc, nullptr);
@ -1365,6 +1393,167 @@ namespace NppDarkMode
SetWindowSubclass(hwnd, TabSubclass, g_tabSubclassID, 0); SetWindowSubclass(hwnd, TabSubclass, g_tabSubclassID, 0);
} }
constexpr UINT_PTR g_customBorderSubclassID = 42;
LRESULT CALLBACK CustomBorderSubclass(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
UINT_PTR uIdSubclass,
DWORD_PTR dwRefData
)
{
UNREFERENCED_PARAMETER(dwRefData);
static bool isHotStatic = false;
switch (uMsg)
{
case WM_NCPAINT:
{
if (!NppDarkMode::isEnabled())
{
break;
}
DefSubclassProc(hWnd, uMsg, wParam, lParam);
HDC hdc = ::GetWindowDC(hWnd);
RECT rcClient{};
::GetClientRect(hWnd, &rcClient);
rcClient.right += (2 * ::GetSystemMetrics(SM_CXEDGE));
auto style = ::GetWindowLongPtr(hWnd, GWL_STYLE);
bool hasVerScrollbar = (style & WS_VSCROLL) == WS_VSCROLL;
if (hasVerScrollbar)
{
rcClient.right += ::GetSystemMetrics(SM_CXVSCROLL);
}
rcClient.bottom += (2 * ::GetSystemMetrics(SM_CYEDGE));
bool hasHorScrollbar = (style & WS_HSCROLL) == WS_HSCROLL;
if (hasHorScrollbar)
{
rcClient.bottom += ::GetSystemMetrics(SM_CXHSCROLL);
}
HPEN hPen = ::CreatePen(PS_SOLID, 1, NppDarkMode::getBackgroundColor());
RECT rcInner = rcClient;
::InflateRect(&rcInner, -1, -1);
NppDarkMode::paintRoundFrameRect(hdc, rcInner, hPen);
::DeleteObject(hPen);
bool hasFocus = ::GetFocus() == hWnd;
POINT ptCursor{};
::GetCursorPos(&ptCursor);
::ScreenToClient(hWnd, &ptCursor);
bool isHot = ::PtInRect(&rcClient, ptCursor);
bool isWindowEnabled = ::IsWindowEnabled(hWnd) == TRUE;
HPEN hEnabledPen = ((isHotStatic && isHot) || hasFocus ? NppDarkMode::getHotEdgePen() : NppDarkMode::getEdgePen());
NppDarkMode::paintRoundFrameRect(hdc, rcClient, isWindowEnabled ? hEnabledPen : NppDarkMode::getDisabledEdgePen());
::ReleaseDC(hWnd, hdc);
return 0;
}
break;
case WM_NCCALCSIZE:
{
if (!NppDarkMode::isEnabled())
{
break;
}
auto lpRect = reinterpret_cast<LPRECT>(lParam);
::InflateRect(lpRect, -(::GetSystemMetrics(SM_CXEDGE)), -(::GetSystemMetrics(SM_CYEDGE)));
auto style = ::GetWindowLongPtr(hWnd, GWL_STYLE);
bool hasVerScrollbar = (style & WS_VSCROLL) == WS_VSCROLL;
if (hasVerScrollbar)
{
lpRect->right -= ::GetSystemMetrics(SM_CXVSCROLL);
}
bool hasHorScrollbar = (style & WS_HSCROLL) == WS_HSCROLL;
if (hasHorScrollbar)
{
lpRect->bottom -= ::GetSystemMetrics(SM_CXHSCROLL);
}
return 0;
}
break;
case WM_MOUSEMOVE:
{
if (!NppDarkMode::isEnabled())
{
break;
}
if (::GetFocus() == hWnd)
{
break;
}
TRACKMOUSEEVENT tme{};
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_LEAVE;
tme.hwndTrack = hWnd;
tme.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&tme);
if (!isHotStatic)
{
isHotStatic = true;
::SetWindowPos(hWnd, nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
}
break;
case WM_MOUSELEAVE:
{
if (!NppDarkMode::isEnabled())
{
break;
}
if (isHotStatic)
{
isHotStatic = false;
::SetWindowPos(hWnd, nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
TRACKMOUSEEVENT tme{};
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_LEAVE | TME_CANCEL;
tme.hwndTrack = hWnd;
tme.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&tme);
}
break;
case WM_NCDESTROY:
{
RemoveWindowSubclass(hWnd, CustomBorderSubclass, uIdSubclass);
}
break;
}
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
}
void subclassCustomBorderForListBoxAndEditControls(HWND hwnd)
{
SetWindowSubclass(hwnd, CustomBorderSubclass, g_customBorderSubclassID, 0);
}
constexpr UINT_PTR g_comboBoxSubclassID = 42; constexpr UINT_PTR g_comboBoxSubclassID = 42;
LRESULT CALLBACK ComboBoxSubclass( LRESULT CALLBACK ComboBoxSubclass(
@ -1448,7 +1637,10 @@ namespace NppDarkMode
bool isHot = ::PtInRect(&rc, ptCursor); bool isHot = ::PtInRect(&rc, ptCursor);
::SetTextColor(hdc, isHot ? NppDarkMode::getTextColor() : NppDarkMode::getDarkerTextColor()); bool isWindowEnabled = ::IsWindowEnabled(hWnd) == TRUE;
auto colorEnabledText = isHot ? NppDarkMode::getTextColor() : NppDarkMode::getDarkerTextColor();
::SetTextColor(hdc, isWindowEnabled ? colorEnabledText : NppDarkMode::getDisabledTextColor());
::SetBkColor(hdc, isHot ? NppDarkMode::getHotBackgroundColor() : NppDarkMode::getBackgroundColor()); ::SetBkColor(hdc, isHot ? NppDarkMode::getHotBackgroundColor() : NppDarkMode::getBackgroundColor());
::ExtTextOut(hdc, ::ExtTextOut(hdc,
rcArrow.left + (rcArrow.right - rcArrow.left) / 2 - dpiManager.scaleX(4), rcArrow.left + (rcArrow.right - rcArrow.left) / 2 - dpiManager.scaleX(4),
@ -1459,7 +1651,8 @@ namespace NppDarkMode
nullptr); nullptr);
::SetBkColor(hdc, NppDarkMode::getBackgroundColor()); ::SetBkColor(hdc, NppDarkMode::getBackgroundColor());
auto hSelectedPen = isHot || hasFocus ? NppDarkMode::getHotEdgePen() : NppDarkMode::getEdgePen(); auto hEnabledPen = (isHot || hasFocus) ? NppDarkMode::getHotEdgePen() : NppDarkMode::getEdgePen();
auto hSelectedPen = isWindowEnabled ? hEnabledPen : NppDarkMode::getDisabledEdgePen();
auto holdPen = static_cast<HPEN>(::SelectObject(hdc, hSelectedPen)); auto holdPen = static_cast<HPEN>(::SelectObject(hdc, hSelectedPen));
POINT edge[] = { POINT edge[] = {
@ -1489,7 +1682,7 @@ namespace NppDarkMode
void subclassComboBoxControl(HWND hwnd) void subclassComboBoxControl(HWND hwnd)
{ {
DWORD_PTR hwndEditData = NULL; DWORD_PTR hwndEditData = 0;
auto style = ::GetWindowLongPtr(hwnd, GWL_STYLE); auto style = ::GetWindowLongPtr(hwnd, GWL_STYLE);
if ((style & CBS_DROPDOWN) == CBS_DROPDOWN) if ((style & CBS_DROPDOWN) == CBS_DROPDOWN)
{ {
@ -1617,6 +1810,43 @@ namespace NppDarkMode
SetWindowTheme(hwnd, p.themeClassName, nullptr); SetWindowTheme(hwnd, p.themeClassName, nullptr);
} }
auto style = ::GetWindowLongPtr(hwnd, GWL_STYLE);
bool isComboBox = (style & LBS_COMBOBOX) == LBS_COMBOBOX;
auto exStyle = ::GetWindowLongPtr(hwnd, GWL_EXSTYLE);
bool hasClientEdge = (exStyle & WS_EX_CLIENTEDGE) == WS_EX_CLIENTEDGE;
if (p.subclass && !isComboBox && hasClientEdge)
{
NppDarkMode::subclassCustomBorderForListBoxAndEditControls(hwnd);
}
#ifndef __MINGW64__ // mingw build for 64 bit has issue with GetWindowSubclass, it is undefined
bool changed = false;
if (::GetWindowSubclass(hwnd, CustomBorderSubclass, g_customBorderSubclassID, nullptr) == TRUE)
{
if (NppDarkMode::isEnabled())
{
if (hasClientEdge)
{
::SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle & ~WS_EX_CLIENTEDGE);
changed = true;
}
}
else if (!hasClientEdge)
{
::SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_CLIENTEDGE);
changed = true;
}
}
if (changed)
{
::SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
#endif // !__MINGW64__
return TRUE; return TRUE;
} }
@ -1630,6 +1860,40 @@ namespace NppDarkMode
SetWindowTheme(hwnd, p.themeClassName, nullptr); SetWindowTheme(hwnd, p.themeClassName, nullptr);
} }
auto exStyle = ::GetWindowLongPtr(hwnd, GWL_EXSTYLE);
bool hasClientEdge = (exStyle & WS_EX_CLIENTEDGE) == WS_EX_CLIENTEDGE;
if (p.subclass && hasClientEdge)
{
NppDarkMode::subclassCustomBorderForListBoxAndEditControls(hwnd);
}
#ifndef __MINGW64__ // mingw build for 64 bit has issue with GetWindowSubclass, it is undefined
bool changed = false;
if (::GetWindowSubclass(hwnd, CustomBorderSubclass, g_customBorderSubclassID, nullptr) == TRUE)
{
if (NppDarkMode::isEnabled())
{
if (hasClientEdge)
{
::SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle & ~WS_EX_CLIENTEDGE);
changed = true;
}
}
else if (!hasClientEdge)
{
::SetWindowLongPtr(hwnd, GWL_EXSTYLE, exStyle | WS_EX_CLIENTEDGE);
changed = true;
}
}
if (changed)
{
::SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
#endif // !__MINGW64__
return TRUE; return TRUE;
} }
@ -2192,13 +2456,8 @@ namespace NppDarkMode
if (!hasTheme) if (!hasTheme)
{ {
auto holdPen = static_cast<HPEN>(::SelectObject(hdc, NppDarkMode::getEdgePen())); NppDarkMode::paintRoundFrameRect(hdc, rcArrowLeft, NppDarkMode::getEdgePen());
auto holdBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH)); NppDarkMode::paintRoundFrameRect(hdc, rcArrowRight, NppDarkMode::getEdgePen());
::Rectangle(hdc, rcArrowLeft.left, rcArrowLeft.top, rcArrowLeft.right, rcArrowLeft.bottom);
::Rectangle(hdc, rcArrowRight.left, rcArrowRight.top, rcArrowRight.right, rcArrowRight.bottom);
::SelectObject(hdc, holdPen);
::SelectObject(hdc, holdBrush);
} }
::SelectObject(hdc, holdFont); ::SelectObject(hdc, holdFont);
@ -2526,4 +2785,18 @@ namespace NppDarkMode
::SetBkColor(hdc, NppDarkMode::getDarkerBackgroundColor()); ::SetBkColor(hdc, NppDarkMode::getDarkerBackgroundColor());
return reinterpret_cast<LRESULT>(NppDarkMode::getDarkerBackgroundBrush()); return reinterpret_cast<LRESULT>(NppDarkMode::getDarkerBackgroundBrush());
} }
INT_PTR onCtlColorListbox(WPARAM wParam, LPARAM lParam)
{
auto hdc = reinterpret_cast<HDC>(wParam);
auto hwnd = reinterpret_cast<HWND>(lParam);
auto style = ::GetWindowLongPtr(hwnd, GWL_STYLE);
bool isComboBox = (style & LBS_COMBOBOX) == LBS_COMBOBOX;
if (!isComboBox && ::IsWindowEnabled(hwnd))
{
return static_cast<INT_PTR>(NppDarkMode::onCtlColorSofter(hdc));
}
return static_cast<INT_PTR>(NppDarkMode::onCtlColor(hdc));
}
} }

View File

@ -42,6 +42,7 @@ namespace NppDarkMode
COLORREF linkText = 0; COLORREF linkText = 0;
COLORREF edge = 0; COLORREF edge = 0;
COLORREF hotEdge = 0; COLORREF hotEdge = 0;
COLORREF disabledEdge = 0;
}; };
struct Options struct Options
@ -107,6 +108,7 @@ namespace NppDarkMode
COLORREF getEdgeColor(); COLORREF getEdgeColor();
COLORREF getHotEdgeColor(); COLORREF getHotEdgeColor();
COLORREF getDisabledEdgeColor();
HBRUSH getBackgroundBrush(); HBRUSH getBackgroundBrush();
HBRUSH getDarkerBackgroundBrush(); HBRUSH getDarkerBackgroundBrush();
@ -116,10 +118,12 @@ namespace NppDarkMode
HBRUSH getEdgeBrush(); HBRUSH getEdgeBrush();
HBRUSH getHotEdgeBrush(); HBRUSH getHotEdgeBrush();
HBRUSH getDisabledEdgeBrush();
HPEN getDarkerTextPen(); HPEN getDarkerTextPen();
HPEN getEdgePen(); HPEN getEdgePen();
HPEN getHotEdgePen(); HPEN getHotEdgePen();
HPEN getDisabledEdgePen();
void setBackgroundColor(COLORREF c); void setBackgroundColor(COLORREF c);
void setSofterBackgroundColor(COLORREF c); void setSofterBackgroundColor(COLORREF c);
@ -132,6 +136,7 @@ namespace NppDarkMode
void setLinkTextColor(COLORREF c); void setLinkTextColor(COLORREF c);
void setEdgeColor(COLORREF c); void setEdgeColor(COLORREF c);
void setHotEdgeColor(COLORREF c); void setHotEdgeColor(COLORREF c);
void setDisabledEdgeColor(COLORREF c);
Colors getDarkModeDefaultColors(); Colors getDarkModeDefaultColors();
void changeCustomTheme(const Colors& colors); void changeCustomTheme(const Colors& colors);
@ -154,6 +159,8 @@ namespace NppDarkMode
// enhancements to DarkMode.h // enhancements to DarkMode.h
void enableDarkScrollBarForWindowAndChildren(HWND hwnd); void enableDarkScrollBarForWindowAndChildren(HWND hwnd);
inline void paintRoundFrameRect(HDC hdc, const RECT rect, const HPEN hpen, int width = 0, int height = 0);
void subclassButtonControl(HWND hwnd); void subclassButtonControl(HWND hwnd);
void subclassGroupboxControl(HWND hwnd); void subclassGroupboxControl(HWND hwnd);
void subclassTabControl(HWND hwnd); void subclassTabControl(HWND hwnd);
@ -191,4 +198,5 @@ namespace NppDarkMode
LRESULT onCtlColorDarker(HDC hdc); LRESULT onCtlColorDarker(HDC hdc);
LRESULT onCtlColorError(HDC hdc); LRESULT onCtlColorError(HDC hdc);
LRESULT onCtlColorDarkerBGStaticText(HDC hdc, bool isTextEnabled); LRESULT onCtlColorDarkerBGStaticText(HDC hdc, bool isTextEnabled);
INT_PTR onCtlColorListbox(WPARAM wParam, LPARAM lParam);
} }

View File

@ -5599,6 +5599,10 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
val = element->Attribute(TEXT("customColorHotEdge"), &i); val = element->Attribute(TEXT("customColorHotEdge"), &i);
if (val) if (val)
_nppGUI._darkmode._customColors.hotEdge = i; _nppGUI._darkmode._customColors.hotEdge = i;
val = element->Attribute(TEXT("customColorDisabledEdge"), &i);
if (val)
_nppGUI._darkmode._customColors.disabledEdge = i;
} }
} }
} }
@ -6698,6 +6702,7 @@ void NppParameters::createXmlTreeFromGUIParams()
GUIConfigElement->SetAttribute(TEXT("customColorLinkText"), _nppGUI._darkmode._customColors.linkText); GUIConfigElement->SetAttribute(TEXT("customColorLinkText"), _nppGUI._darkmode._customColors.linkText);
GUIConfigElement->SetAttribute(TEXT("customColorEdge"), _nppGUI._darkmode._customColors.edge); GUIConfigElement->SetAttribute(TEXT("customColorEdge"), _nppGUI._darkmode._customColors.edge);
GUIConfigElement->SetAttribute(TEXT("customColorHotEdge"), _nppGUI._darkmode._customColors.hotEdge); GUIConfigElement->SetAttribute(TEXT("customColorHotEdge"), _nppGUI._darkmode._customColors.hotEdge);
GUIConfigElement->SetAttribute(TEXT("customColorDisabledEdge"), _nppGUI._darkmode._customColors.disabledEdge);
} }
// <GUIConfig name="ScintillaPrimaryView" lineNumberMargin="show" bookMarkMargin="show" indentGuideLine="show" folderMarkStyle="box" lineWrapMethod="aligned" currentLineHilitingShow="show" scrollBeyondLastLine="no" rightClickKeepsSelection="no" disableAdvancedScrolling="no" wrapSymbolShow="hide" Wrap="no" borderEdge="yes" edge="no" edgeNbColumn="80" zoom="0" zoom2="0" whiteSpaceShow="hide" eolShow="hide" borderWidth="2" smoothFont="no" /> // <GUIConfig name="ScintillaPrimaryView" lineNumberMargin="show" bookMarkMargin="show" indentGuideLine="show" folderMarkStyle="box" lineWrapMethod="aligned" currentLineHilitingShow="show" scrollBeyondLastLine="no" rightClickKeepsSelection="no" disableAdvancedScrolling="no" wrapSymbolShow="hide" Wrap="no" borderEdge="yes" edge="no" edgeNbColumn="80" zoom="0" zoom2="0" whiteSpaceShow="hide" eolShow="hide" borderWidth="2" smoothFont="no" />

View File

@ -81,8 +81,6 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
{ {
NppParameters& nppParamInst = NppParameters::getInstance(); NppParameters& nppParamInst = NppParameters::getInstance();
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
_hCheckBold = ::GetDlgItem(_hSelf, IDC_BOLD_CHECK); _hCheckBold = ::GetDlgItem(_hSelf, IDC_BOLD_CHECK);
_hCheckItalic = ::GetDlgItem(_hSelf, IDC_ITALIC_CHECK); _hCheckItalic = ::GetDlgItem(_hSelf, IDC_ITALIC_CHECK);
_hCheckUnderline = ::GetDlgItem(_hSelf, IDC_UNDERLINE_CHECK); _hCheckUnderline = ::GetDlgItem(_hSelf, IDC_UNDERLINE_CHECK);
@ -151,6 +149,9 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
loadLangListFromNppParam(); loadLangListFromNppParam();
updateGlobalOverrideCtrls(); updateGlobalOverrideCtrls();
setVisualFromStyleList(); setVisualFromStyleList();
NppDarkMode::autoSubclassAndThemeChildControls(_hSelf);
goToCenter(); goToCenter();
return TRUE; return TRUE;
@ -177,7 +178,7 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
{ {
if (NppDarkMode::isEnabled()) if (NppDarkMode::isEnabled())
{ {
return NppDarkMode::onCtlColor(reinterpret_cast<HDC>(wParam)); return NppDarkMode::onCtlColorListbox(wParam, lParam);
} }
break; break;
} }

View File

@ -128,6 +128,7 @@ BEGIN
LTEXT "Link",IDD_CUSTOMIZED_COLOR10_STATIC, 240,115,95,8 LTEXT "Link",IDD_CUSTOMIZED_COLOR10_STATIC, 240,115,95,8
LTEXT "Edge",IDD_CUSTOMIZED_COLOR9_STATIC,355,55,94,8 LTEXT "Edge",IDD_CUSTOMIZED_COLOR9_STATIC,355,55,94,8
LTEXT "Edge highlight",IDD_CUSTOMIZED_COLOR11_STATIC,355,75,94,8 LTEXT "Edge highlight",IDD_CUSTOMIZED_COLOR11_STATIC,355,75,94,8
LTEXT "Edge disabled",IDD_CUSTOMIZED_COLOR12_STATIC,355,95,94,8
PUSHBUTTON "Reset",IDD_CUSTOMIZED_RESET_BUTTON,252,155,45,14 PUSHBUTTON "Reset",IDD_CUSTOMIZED_RESET_BUTTON,252,155,45,14
END END

View File

@ -217,7 +217,7 @@ intptr_t CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
{ {
if (NppDarkMode::isEnabled()) if (NppDarkMode::isEnabled())
{ {
return NppDarkMode::onCtlColor(reinterpret_cast<HDC>(wParam)); return NppDarkMode::onCtlColorListbox(wParam, lParam);
} }
break; break;
} }
@ -957,6 +957,7 @@ void DarkModeSubDlg::enableCustomizedColorCtrls(bool doEnable)
::EnableWindow(_pEdgeColorPicker->getHSelf(), doEnable); ::EnableWindow(_pEdgeColorPicker->getHSelf(), doEnable);
::EnableWindow(_pLinkColorPicker->getHSelf(), doEnable); ::EnableWindow(_pLinkColorPicker->getHSelf(), doEnable);
::EnableWindow(_pHotEdgeColorPicker->getHSelf(), doEnable); ::EnableWindow(_pHotEdgeColorPicker->getHSelf(), doEnable);
::EnableWindow(_pDisabledEdgeColorPicker->getHSelf(), doEnable);
::EnableWindow(::GetDlgItem(_hSelf, IDD_CUSTOMIZED_RESET_BUTTON), doEnable); ::EnableWindow(::GetDlgItem(_hSelf, IDD_CUSTOMIZED_RESET_BUTTON), doEnable);
@ -973,6 +974,7 @@ void DarkModeSubDlg::enableCustomizedColorCtrls(bool doEnable)
_pEdgeColorPicker->setColour(NppDarkMode::getEdgeColor()); _pEdgeColorPicker->setColour(NppDarkMode::getEdgeColor());
_pLinkColorPicker->setColour(NppDarkMode::getLinkTextColor()); _pLinkColorPicker->setColour(NppDarkMode::getLinkTextColor());
_pHotEdgeColorPicker->setColour(NppDarkMode::getHotEdgeColor()); _pHotEdgeColorPicker->setColour(NppDarkMode::getHotEdgeColor());
_pDisabledEdgeColorPicker->setColour(NppDarkMode::getDisabledEdgeColor());
redraw(); redraw();
} }
@ -1047,6 +1049,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
_pEdgeColorPicker = new ColourPicker; _pEdgeColorPicker = new ColourPicker;
_pLinkColorPicker = new ColourPicker; _pLinkColorPicker = new ColourPicker;
_pHotEdgeColorPicker = new ColourPicker; _pHotEdgeColorPicker = new ColourPicker;
_pDisabledEdgeColorPicker = new ColourPicker;
_pBackgroundColorPicker->init(_hInst, _hSelf); _pBackgroundColorPicker->init(_hInst, _hSelf);
_pSofterBackgroundColorPicker->init(_hInst, _hSelf); _pSofterBackgroundColorPicker->init(_hInst, _hSelf);
@ -1060,6 +1063,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
_pEdgeColorPicker->init(_hInst, _hSelf); _pEdgeColorPicker->init(_hInst, _hSelf);
_pLinkColorPicker->init(_hInst, _hSelf); _pLinkColorPicker->init(_hInst, _hSelf);
_pHotEdgeColorPicker->init(_hInst, _hSelf); _pHotEdgeColorPicker->init(_hInst, _hSelf);
_pDisabledEdgeColorPicker->init(_hInst, _hSelf);
int cpDynamicalWidth = NppParameters::getInstance()._dpiManager.scaleX(25); int cpDynamicalWidth = NppParameters::getInstance()._dpiManager.scaleX(25);
int cpDynamicalHeight = NppParameters::getInstance()._dpiManager.scaleY(25); int cpDynamicalHeight = NppParameters::getInstance()._dpiManager.scaleY(25);
@ -1075,6 +1079,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
move2CtrlLeft(IDD_CUSTOMIZED_COLOR9_STATIC, _pEdgeColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight); move2CtrlLeft(IDD_CUSTOMIZED_COLOR9_STATIC, _pEdgeColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight);
move2CtrlLeft(IDD_CUSTOMIZED_COLOR10_STATIC, _pLinkColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight); move2CtrlLeft(IDD_CUSTOMIZED_COLOR10_STATIC, _pLinkColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight);
move2CtrlLeft(IDD_CUSTOMIZED_COLOR11_STATIC, _pHotEdgeColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight); move2CtrlLeft(IDD_CUSTOMIZED_COLOR11_STATIC, _pHotEdgeColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight);
move2CtrlLeft(IDD_CUSTOMIZED_COLOR12_STATIC, _pDisabledEdgeColorPicker->getHSelf(), cpDynamicalWidth, cpDynamicalHeight);
_pBackgroundColorPicker->display(); _pBackgroundColorPicker->display();
_pSofterBackgroundColorPicker->display(); _pSofterBackgroundColorPicker->display();
@ -1087,6 +1092,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
_pEdgeColorPicker->display(); _pEdgeColorPicker->display();
_pLinkColorPicker->display(); _pLinkColorPicker->display();
_pHotEdgeColorPicker->display(); _pHotEdgeColorPicker->display();
_pDisabledEdgeColorPicker->display();
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_DARKMODE_BLACK), nppGUI._darkmode._isEnabled); ::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_DARKMODE_BLACK), nppGUI._darkmode._isEnabled);
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_DARKMODE_RED), nppGUI._darkmode._isEnabled); ::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_DARKMODE_RED), nppGUI._darkmode._isEnabled);
@ -1122,7 +1128,8 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
dlgCtrlID == IDD_CUSTOMIZED_COLOR8_STATIC || dlgCtrlID == IDD_CUSTOMIZED_COLOR8_STATIC ||
dlgCtrlID == IDD_CUSTOMIZED_COLOR9_STATIC || dlgCtrlID == IDD_CUSTOMIZED_COLOR9_STATIC ||
dlgCtrlID == IDD_CUSTOMIZED_COLOR10_STATIC || dlgCtrlID == IDD_CUSTOMIZED_COLOR10_STATIC ||
dlgCtrlID == IDD_CUSTOMIZED_COLOR11_STATIC); dlgCtrlID == IDD_CUSTOMIZED_COLOR11_STATIC ||
dlgCtrlID == IDD_CUSTOMIZED_COLOR12_STATIC);
//set the static text colors to show enable/disable instead of ::EnableWindow which causes blurry text //set the static text colors to show enable/disable instead of ::EnableWindow which causes blurry text
if (isStaticText) if (isStaticText)
{ {
@ -1155,6 +1162,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
_pEdgeColorPicker->destroy(); _pEdgeColorPicker->destroy();
_pLinkColorPicker->destroy(); _pLinkColorPicker->destroy();
_pHotEdgeColorPicker->destroy(); _pHotEdgeColorPicker->destroy();
_pDisabledEdgeColorPicker->destroy();
delete _pBackgroundColorPicker; delete _pBackgroundColorPicker;
delete _pSofterBackgroundColorPicker; delete _pSofterBackgroundColorPicker;
@ -1167,6 +1175,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
delete _pEdgeColorPicker; delete _pEdgeColorPicker;
delete _pLinkColorPicker; delete _pLinkColorPicker;
delete _pHotEdgeColorPicker; delete _pHotEdgeColorPicker;
delete _pDisabledEdgeColorPicker;
} }
case WM_COMMAND: case WM_COMMAND:
@ -1358,6 +1367,12 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
NppDarkMode::setHotEdgeColor(c); NppDarkMode::setHotEdgeColor(c);
nppGUI._darkmode._customColors.hotEdge = c; nppGUI._darkmode._customColors.hotEdge = c;
} }
else if (reinterpret_cast<HWND>(lParam) == _pDisabledEdgeColorPicker->getHSelf())
{
c = _pDisabledEdgeColorPicker->getColour();
NppDarkMode::setDisabledEdgeColor(c);
nppGUI._darkmode._customColors.disabledEdge = c;
}
else else
{ {
return FALSE; return FALSE;
@ -1395,6 +1410,7 @@ intptr_t CALLBACK DarkModeSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
_pEdgeColorPicker->setColour(disabledColor); _pEdgeColorPicker->setColour(disabledColor);
_pLinkColorPicker->setColour(disabledColor); _pLinkColorPicker->setColour(disabledColor);
_pHotEdgeColorPicker->setColour(disabledColor); _pHotEdgeColorPicker->setColour(disabledColor);
_pDisabledEdgeColorPicker->setColour(disabledColor);
redraw(); redraw();
} }
@ -2519,7 +2535,7 @@ intptr_t CALLBACK LanguageSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
{ {
if (NppDarkMode::isEnabled()) if (NppDarkMode::isEnabled())
{ {
return NppDarkMode::onCtlColor(reinterpret_cast<HDC>(wParam)); return NppDarkMode::onCtlColorListbox(wParam, lParam);
} }
break; break;
} }

View File

@ -72,6 +72,7 @@ private:
ColourPicker* _pEdgeColorPicker = nullptr; ColourPicker* _pEdgeColorPicker = nullptr;
ColourPicker* _pLinkColorPicker = nullptr; ColourPicker* _pLinkColorPicker = nullptr;
ColourPicker* _pHotEdgeColorPicker = nullptr; ColourPicker* _pHotEdgeColorPicker = nullptr;
ColourPicker* _pDisabledEdgeColorPicker = nullptr;
intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); intptr_t CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam);
void enableCustomizedColorCtrls(bool doEnable); void enableCustomizedColorCtrls(bool doEnable);

View File

@ -419,6 +419,7 @@
#define IDD_CUSTOMIZED_COLOR9_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 24) #define IDD_CUSTOMIZED_COLOR9_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 24)
#define IDD_CUSTOMIZED_COLOR10_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 25) #define IDD_CUSTOMIZED_COLOR10_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 25)
#define IDD_CUSTOMIZED_COLOR11_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 26) #define IDD_CUSTOMIZED_COLOR11_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 26)
#define IDD_CUSTOMIZED_COLOR12_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 27)
#define IDD_CUSTOMIZED_RESET_BUTTON (IDD_PREFERENCE_SUB_DARKMODE + 30) #define IDD_CUSTOMIZED_RESET_BUTTON (IDD_PREFERENCE_SUB_DARKMODE + 30)
#define IDC_DARKMODE_TONES_GB_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 35) #define IDC_DARKMODE_TONES_GB_STATIC (IDD_PREFERENCE_SUB_DARKMODE + 35)
#endif //PREFERENCE_RC_H #endif //PREFERENCE_RC_H

View File

@ -1076,7 +1076,6 @@ intptr_t CALLBACK ScintillaKeyMap::run_dlgProc(UINT Message, WPARAM wParam, LPAR
} }
case WM_CTLCOLOREDIT: case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
{ {
if (NppDarkMode::isEnabled()) if (NppDarkMode::isEnabled())
{ {
@ -1085,6 +1084,15 @@ intptr_t CALLBACK ScintillaKeyMap::run_dlgProc(UINT Message, WPARAM wParam, LPAR
break; break;
} }
case WM_CTLCOLORLISTBOX:
{
if (NppDarkMode::isEnabled())
{
return NppDarkMode::onCtlColorListbox(wParam, lParam);
}
break;
}
case WM_CTLCOLORDLG: case WM_CTLCOLORDLG:
case WM_CTLCOLORSTATIC: case WM_CTLCOLORSTATIC:
{ {