Make dark mode groupbox edge to use edge color
Make also combobox border round on Windows 11 to match style, and fix visual glitch with transparency groupbox in Find dialog. Fix #11693, close #11694pull/11697/head
parent
c9b177bb9e
commit
a577564699
|
@ -769,6 +769,15 @@ namespace NppDarkMode
|
||||||
::EnableDarkScrollBarForWindowAndChildren(hwnd);
|
::EnableDarkScrollBarForWindowAndChildren(hwnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void paintRoundFrameRect(HDC hdc, const RECT rect, const HPEN hpen, int width, int height)
|
||||||
|
{
|
||||||
|
auto holdBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH));
|
||||||
|
auto holdPen = ::SelectObject(hdc, hpen);
|
||||||
|
::RoundRect(hdc, rect.left, rect.top, rect.right, rect.bottom, width, height);
|
||||||
|
::SelectObject(hdc, holdBrush);
|
||||||
|
::SelectObject(hdc, holdPen);
|
||||||
|
}
|
||||||
|
|
||||||
struct ButtonData
|
struct ButtonData
|
||||||
{
|
{
|
||||||
HTHEME hTheme = nullptr;
|
HTHEME hTheme = nullptr;
|
||||||
|
@ -1039,13 +1048,9 @@ namespace NppDarkMode
|
||||||
void paintGroupbox(HWND hwnd, HDC hdc, ButtonData& buttonData)
|
void paintGroupbox(HWND hwnd, HDC hdc, ButtonData& buttonData)
|
||||||
{
|
{
|
||||||
DWORD nStyle = GetWindowLong(hwnd, GWL_STYLE);
|
DWORD nStyle = GetWindowLong(hwnd, GWL_STYLE);
|
||||||
|
bool isDisabled = (nStyle & WS_DISABLED) == WS_DISABLED;
|
||||||
int iPartID = BP_GROUPBOX;
|
int iPartID = BP_GROUPBOX;
|
||||||
int iStateID = GBS_NORMAL;
|
int iStateID = isDisabled ? GBS_DISABLED : GBS_NORMAL;
|
||||||
|
|
||||||
if (nStyle & WS_DISABLED)
|
|
||||||
{
|
|
||||||
iStateID = GBS_DISABLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
RECT rcClient = {};
|
RECT rcClient = {};
|
||||||
GetClientRect(hwnd, &rcClient);
|
GetClientRect(hwnd, &rcClient);
|
||||||
|
@ -1102,7 +1107,8 @@ namespace NppDarkMode
|
||||||
ExcludeClipRect(hdc, rcContent.left, rcContent.top, rcContent.right, rcContent.bottom);
|
ExcludeClipRect(hdc, rcContent.left, rcContent.top, rcContent.right, rcContent.bottom);
|
||||||
|
|
||||||
//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);
|
||||||
|
|
||||||
SelectClipRgn(hdc, nullptr);
|
SelectClipRgn(hdc, nullptr);
|
||||||
|
|
||||||
|
@ -1112,7 +1118,7 @@ namespace NppDarkMode
|
||||||
rcText.left += 2;
|
rcText.left += 2;
|
||||||
|
|
||||||
DTTOPTS dtto = { sizeof(DTTOPTS), DTT_TEXTCOLOR };
|
DTTOPTS dtto = { sizeof(DTTOPTS), DTT_TEXTCOLOR };
|
||||||
dtto.crText = NppDarkMode::getTextColor();
|
dtto.crText = isDisabled ? NppDarkMode::getDisabledTextColor() : NppDarkMode::getTextColor();
|
||||||
|
|
||||||
DWORD textFlags = isCenter ? DT_CENTER : DT_LEFT;
|
DWORD textFlags = isCenter ? DT_CENTER : DT_LEFT;
|
||||||
|
|
||||||
|
@ -1386,8 +1392,10 @@ namespace NppDarkMode
|
||||||
|
|
||||||
auto holdBrush = ::SelectObject(hdc, NppDarkMode::getDarkerBackgroundBrush());
|
auto holdBrush = ::SelectObject(hdc, NppDarkMode::getDarkerBackgroundBrush());
|
||||||
|
|
||||||
|
auto dpiManager = NppParameters::getInstance()._dpiManager;
|
||||||
|
|
||||||
RECT rcArrow = {
|
RECT rcArrow = {
|
||||||
rc.right - NppParameters::getInstance()._dpiManager.scaleX(17), rc.top + 1,
|
rc.right - dpiManager.scaleX(17), rc.top + 1,
|
||||||
rc.right - 1, rc.bottom - 1
|
rc.right - 1, rc.bottom - 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1437,7 +1445,7 @@ namespace NppDarkMode
|
||||||
::SetTextColor(hdc, isHot ? NppDarkMode::getTextColor() : NppDarkMode::getDarkerTextColor());
|
::SetTextColor(hdc, isHot ? NppDarkMode::getTextColor() : NppDarkMode::getDarkerTextColor());
|
||||||
::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 - NppParameters::getInstance()._dpiManager.scaleX(4),
|
rcArrow.left + (rcArrow.right - rcArrow.left) / 2 - dpiManager.scaleX(4),
|
||||||
rcArrow.top + 3,
|
rcArrow.top + 3,
|
||||||
ETO_OPAQUE | ETO_CLIPPED,
|
ETO_OPAQUE | ETO_CLIPPED,
|
||||||
&rcArrow, L"˅",
|
&rcArrow, L"˅",
|
||||||
|
@ -1445,15 +1453,17 @@ namespace NppDarkMode
|
||||||
nullptr);
|
nullptr);
|
||||||
::SetBkColor(hdc, NppDarkMode::getBackgroundColor());
|
::SetBkColor(hdc, NppDarkMode::getBackgroundColor());
|
||||||
|
|
||||||
auto holdPen = static_cast<HPEN>(::SelectObject(hdc, isHot || hasFocus ? NppDarkMode::getHotEdgePen() : NppDarkMode::getEdgePen()));
|
auto hSelectedPen = isHot || hasFocus ? NppDarkMode::getHotEdgePen() : NppDarkMode::getEdgePen();
|
||||||
|
auto holdPen = static_cast<HPEN>(::SelectObject(hdc, hSelectedPen));
|
||||||
|
|
||||||
POINT edge[] = {
|
POINT edge[] = {
|
||||||
{rcArrow.left - 1, rcArrow.top},
|
{rcArrow.left - 1, rcArrow.top},
|
||||||
{rcArrow.left - 1, rcArrow.bottom}
|
{rcArrow.left - 1, rcArrow.bottom}
|
||||||
};
|
};
|
||||||
::Polyline(hdc, edge, _countof(edge));
|
::Polyline(hdc, edge, _countof(edge));
|
||||||
|
|
||||||
::SelectObject(hdc, ::GetStockObject(NULL_BRUSH));
|
int roundCornerValue = NppDarkMode::isWindows11() ? dpiManager.scaleX(4) : 0;
|
||||||
::RoundRect(hdc, rc.left, rc.top, rc.right, rc.bottom, 0, 0);
|
NppDarkMode::paintRoundFrameRect(hdc, rc, hSelectedPen, roundCornerValue, roundCornerValue);
|
||||||
|
|
||||||
::SelectObject(hdc, holdPen);
|
::SelectObject(hdc, holdPen);
|
||||||
::SelectObject(hdc, holdBrush);
|
::SelectObject(hdc, holdBrush);
|
||||||
|
|
|
@ -375,7 +375,6 @@ void FindReplaceDlg::fillFindHistory()
|
||||||
|
|
||||||
if (findHistory._transparencyMode == FindHistory::none)
|
if (findHistory._transparencyMode == FindHistory::none)
|
||||||
{
|
{
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_GRPBOX, false);
|
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_LOSSFOCUS_RADIO, false);
|
enableFindDlgItem(IDC_TRANSPARENT_LOSSFOCUS_RADIO, false);
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_ALWAYS_RADIO, false);
|
enableFindDlgItem(IDC_TRANSPARENT_ALWAYS_RADIO, false);
|
||||||
enableFindDlgItem(IDC_PERCENTAGE_SLIDER, false);
|
enableFindDlgItem(IDC_PERCENTAGE_SLIDER, false);
|
||||||
|
@ -1771,7 +1770,6 @@ intptr_t CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARA
|
||||||
{
|
{
|
||||||
bool isChecked = isCheckedOrNot(IDC_TRANSPARENT_CHECK);
|
bool isChecked = isCheckedOrNot(IDC_TRANSPARENT_CHECK);
|
||||||
|
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_GRPBOX, isChecked);
|
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_LOSSFOCUS_RADIO, isChecked);
|
enableFindDlgItem(IDC_TRANSPARENT_LOSSFOCUS_RADIO, isChecked);
|
||||||
enableFindDlgItem(IDC_TRANSPARENT_ALWAYS_RADIO, isChecked);
|
enableFindDlgItem(IDC_TRANSPARENT_ALWAYS_RADIO, isChecked);
|
||||||
enableFindDlgItem(IDC_PERCENTAGE_SLIDER, isChecked);
|
enableFindDlgItem(IDC_PERCENTAGE_SLIDER, isChecked);
|
||||||
|
|
Loading…
Reference in New Issue