X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c18fa7a4b601b6a3d3212872f5f3fe62b289b005..be38a31d378be07b10c97786074e8f813ddf6fcb:/src/generic/listctrl.cpp diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index eea37b0384..07efb80c21 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -1380,7 +1380,11 @@ bool wxListLineData::SetAttributes(wxDC *dc, // arithmetics on wxColour, unfortunately) wxColour colText; if ( highlighted ) +#ifdef __WXMAC__ + colText = *wxWHITE; +#else colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT); +#endif else if ( attr && attr->HasTextColour() ) colText = attr->GetTextColour(); else @@ -2182,23 +2186,39 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, { Init(); + +#ifdef __WXMAC__ + // OS X sel item highlight color differs from text highlight color, which is + // what wxSYS_COLOUR_HIGHLIGHT returns. + RGBColor hilight; + GetThemeBrushAsColor(kThemeBrushAlternatePrimaryHighlightColor, 32, true, &hilight); + m_highlightBrush = new wxBrush( wxColour(hilight.red, hilight.green, hilight.blue ), wxSOLID ); +#else m_highlightBrush = new wxBrush - ( + ( wxSystemSettings::GetColour ( wxSYS_COLOUR_HIGHLIGHT ), wxSOLID - ); + ); +#endif +#ifdef __WXMAC__ + // on Mac, this color also differs from the wxSYS_COLOUR_BTNSHADOW, enough to be noticable. + // I don't know if BTNSHADOW is appropriate in other contexts, so I'm just changing it here. + GetThemeBrushAsColor(kThemeBrushSecondaryHighlightColor, 32, true, &hilight); + m_highlightUnfocusedBrush = new wxBrush( wxColour(hilight.red, hilight.green, hilight.blue ), wxSOLID ); +#else m_highlightUnfocusedBrush = new wxBrush - ( - wxSystemSettings::GetColour - ( - wxSYS_COLOUR_BTNSHADOW - ), - wxSOLID - ); + ( + wxSystemSettings::GetColour + ( + wxSYS_COLOUR_BTNSHADOW + ), + wxSOLID + ); +#endif SetScrollbars( 0, 0, 0, 0, 0, 0 ); @@ -3946,6 +3966,8 @@ bool wxListMainWindow::GetItemPosition(long item, wxPoint& pos) const void wxListMainWindow::RecalculatePositions(bool noRefresh) { + const int lineHeight = GetLineHeight(); + wxClientDC dc( this ); dc.SetFont( GetFont() ); @@ -3979,8 +4001,6 @@ void wxListMainWindow::RecalculatePositions(bool noRefresh) clientHeight; GetSize( &clientWidth, &clientHeight ); - const int lineHeight = GetLineHeight(); - if ( InReportView() ) { // all lines have the same height and we scroll one line per step