X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/10368bffe1dc0f9e091246fd281ebda51f6ee3f6..3e1924dd5f5744c3e2a8973de9b3e4f372b7fd85:/src/generic/vlbox.cpp diff --git a/src/generic/vlbox.cpp b/src/generic/vlbox.cpp index 747d828251..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 // !selected + { + dc.SetBrush(*wxTRANSPARENT_BRUSH); } - //else: do nothing for the normal items + 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) ) @@ -602,13 +613,7 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event) case WXK_TAB: // Since we are using wxWANTS_CHARS we need to send navigation // events for the tabs on MSW - { - wxNavigationKeyEvent ne; - ne.SetDirection(!event.ShiftDown()); - ne.SetCurrentFocus(this); - ne.SetEventObject(this); - GetParent()->GetEventHandler()->ProcessEvent(ne); - } + HandleAsNavigationKey(event); // fall through to default #endif default: