show the selected item with customs colour correctly when the control doesn't have focus (i.e. don't keep the selected background)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2003-10-13 23:38:53 +00:00
parent 9e3b313e79
commit 19da49fcd0

View File

@ -2610,60 +2610,42 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
wxTreeItemAttr * const attr = it->second;
HFONT hFont;
if ( attr->HasFont() )
{
hFont = GetHfontOf(attr->GetFont());
}
else
{
hFont = 0;
}
wxColour colText;
if ( attr->HasTextColour() )
{
colText = attr->GetTextColour();
}
else
{
colText = GetForegroundColour();
}
// selection colours should override ours
if ( nmcd.uItemState & CDIS_SELECTED )
{
lptvcd->clrTextBk =
::GetSysColor(COLOR_HIGHLIGHT);
lptvcd->clrText =
::GetSysColor(COLOR_HIGHLIGHTTEXT);
}
else // !selected
// selection colours should override ours,
// otherwise it is too confusing ot the user
if ( !(nmcd.uItemState & CDIS_SELECTED) )
{
wxColour colBack;
if ( attr->HasBackgroundColour() )
{
colBack = attr->GetBackgroundColour();
lptvcd->clrTextBk = wxColourToRGB(colBack);
}
else
{
colBack = GetBackgroundColour();
}
lptvcd->clrText = wxColourToRGB(colText);
lptvcd->clrTextBk = wxColourToRGB(colBack);
}
// note that if we wanted to set colours for
// individual columns (subitems), we would have
// returned CDRF_NOTIFYSUBITEMREDRAW from here
if ( hFont )
// but we still want to keep the special foreground
// colour when we don't have focus (we can't keep
// it when we do, it would usually be unreadable on
// the almost inverted bg colour...)
if ( !(nmcd.uItemState & CDIS_SELECTED) ||
FindFocus() != this )
{
wxColour colText;
if ( attr->HasTextColour() )
{
colText = attr->GetTextColour();
lptvcd->clrText = wxColourToRGB(colText);
}
}
if ( attr->HasFont() )
{
HFONT hFont = GetHfontOf(attr->GetFont());
::SelectObject(nmcd.hdc, hFont);
*result = CDRF_NEWFONT;
}
else
else // no specific font
{
*result = CDRF_DODEFAULT;
}