Use correct colour for selected items in generic wxDVC.

wxDataViewCustomRenderer::RenderText() taking attributes must use correct
colour for the selected items if no attribute is specified as it can be (and
is) called directly and not only via the compatibility overload.

This fixes the display of the selected items in the dataview sample broken by
recent changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-10-15 16:53:45 +00:00
parent e607eac25c
commit 84fc95da58
2 changed files with 17 additions and 16 deletions

View File

@@ -704,30 +704,24 @@ wxDataViewCustomRenderer::wxDataViewCustomRenderer( const wxString &varianttype,
{
}
void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset,
wxRect cell, wxDC *dc, int state )
{
wxColour col = state & wxDATAVIEW_CELL_SELECTED
? wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)
: GetOwner()->GetOwner()->GetForegroundColour();
wxDataViewItemAttr attr;
attr.SetColour(col);
RenderText(*dc, cell, wxALIGN_NOT, text, &attr, state, xoffset);
}
void
wxDataViewCustomRenderer::RenderText(wxDC& dc,
const wxRect& rect,
int align,
const wxString& text,
const wxDataViewItemAttr *attr,
int WXUNUSED(state),
int state,
int xoffset)
{
wxDCTextColourChanger changeFg(dc);
wxColour col;
if ( attr && attr->HasColour() )
changeFg.Set(attr->GetColour());
col = attr->GetColour();
else if ( state & wxDATAVIEW_CELL_SELECTED )
col = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
else // use default foreground
col = GetOwner()->GetOwner()->GetForegroundColour();
wxDCTextColourChanger changeFg(dc, col);
wxDCFontChanger changeFont(dc);
if ( attr && attr->HasFont() )