diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index b05e82a44b..4b66e98288 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -1138,6 +1138,7 @@ public: wxString GetRowLabelValue( int row ); wxString GetColLabelValue( int col ); wxColour GetGridLineColour() { return m_gridLineColour; } + wxColour GetCellHighlightColour() { return m_cellHighlightColour; } void SetRowLabelSize( int width ); void SetColLabelSize( int height ); @@ -1149,6 +1150,7 @@ public: void SetRowLabelValue( int row, const wxString& ); void SetColLabelValue( int col, const wxString& ); void SetGridLineColour( const wxColour& ); + void SetCellHighlightColour( const wxColour& ); void EnableDragRowSize( bool enable = TRUE ); void DisableDragRowSize() { EnableDragRowSize( FALSE ); } @@ -1586,6 +1588,7 @@ protected: wxColour m_gridLineColour; bool m_gridLinesEnabled; + wxColour m_cellHighlightColour; // common part of AutoSizeColumn/Row() and GetBestSize() int SetOrCalcColumnSizes(bool calcOnly, bool setAsMin = TRUE); diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 1e729425db..b3583efe0e 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -3284,6 +3284,7 @@ void wxGrid::Init() m_gridLineColour = wxColour( 128, 128, 255 ); m_gridLinesEnabled = TRUE; + m_cellHighlightColour = m_gridLineColour; m_cursorMode = WXGRID_CURSOR_SELECT_CELL; m_winCapture = (wxWindow *)NULL; @@ -5503,7 +5504,7 @@ void wxGrid::DrawCellHighlight( wxDC& dc, const wxGridCellAttr *attr ) // hmmm... what could we do here to show that the cell is disabled? // for now, I just draw a thinner border than for the other ones, but // it doesn't look really good - dc.SetPen(wxPen(m_gridLineColour, attr->IsReadOnly() ? 1 : 3, wxSOLID)); + dc.SetPen(wxPen(m_cellHighlightColour, attr->IsReadOnly() ? 1 : 3, wxSOLID)); dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRectangle(rect); @@ -6972,6 +6973,21 @@ void wxGrid::SetGridLineColour( const wxColour& colour ) } } + +void wxGrid::SetCellHighlightColour( const wxColour& colour ) +{ + if ( m_cellHighlightColour != colour ) + { + m_cellHighlightColour = colour; + + wxClientDC dc( m_gridWin ); + PrepareDC( dc ); + wxGridCellAttr* attr = GetCellAttr(m_currentCellCoords); + DrawCellHighlight(dc, attr); + attr->DecRef(); + } +} + void wxGrid::EnableGridLines( bool enable ) { if ( enable != m_gridLinesEnabled )