X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f029f1d15b04dd70522008cdf105be87140fabc6..3e1924dd5f5744c3e2a8973de9b3e4f372b7fd85:/src/generic/vlbox.cpp diff --git a/src/generic/vlbox.cpp b/src/generic/vlbox.cpp index d75fc4f130..4d27222205 100644 --- a/src/generic/vlbox.cpp +++ b/src/generic/vlbox.cpp @@ -355,29 +355,40 @@ void wxVListBox::OnDrawSeparator(wxDC& WXUNUSED(dc), { } -void wxVListBox::OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const +bool +wxVListBox::DoDrawSolidBackground(const wxColour& col, + wxDC& dc, + const wxRect& rect, + size_t n) const { - if ( m_colBgSel.IsOk() ) + if ( !col.IsOk() ) + return false; + + // we need to render selected and current items differently + const bool isSelected = IsSelected(n), + isCurrent = IsCurrent(n); + if ( isSelected || isCurrent ) { - // we need to render selected and current items differently - const bool isSelected = IsSelected(n), - isCurrent = IsCurrent(n); - if ( isSelected || isCurrent ) + if ( isSelected ) { - if ( isSelected ) - { - dc.SetBrush(wxBrush(m_colBgSel, wxSOLID)); - } - else // !selected - { - dc.SetBrush(*wxTRANSPARENT_BRUSH); - } - dc.SetPen(*(isCurrent ? wxBLACK_PEN : wxTRANSPARENT_PEN)); - dc.DrawRectangle(rect); + dc.SetBrush(wxBrush(col, wxSOLID)); } - //else: do nothing for the normal items + else // !selected + { + dc.SetBrush(*wxTRANSPARENT_BRUSH); + } + dc.SetPen(*(isCurrent ? wxBLACK_PEN : wxTRANSPARENT_PEN)); + dc.DrawRectangle(rect); } - else // use wxRendererNative for a more native look&feel: + //else: do nothing for the normal items + + return true; +} + +void wxVListBox::OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const +{ + // use wxRendererNative for more native look unless we use custom bg colour + if ( !DoDrawSolidBackground(m_colBgSel, dc, rect, n) ) { int flags = 0; if ( IsSelected(n) )