]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed bug in wxGrid::DrawAllGridLines that was causing crashes
authorMichael Bedward <mbedward@ozemail.com.au>
Mon, 7 Feb 2000 03:36:01 +0000 (03:36 +0000)
committerMichael Bedward <mbedward@ozemail.com.au>
Mon, 7 Feb 2000 03:36:01 +0000 (03:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/grid.cpp

index 3272dfb10fc561e3eabd6cb192fd2c6c5ef851e2..88a2520a583aa5954bd8d49a5319c6528e687132 100644 (file)
@@ -36,8 +36,8 @@
 
 #include "wx/generic/grid.h"
 
 
 #include "wx/generic/grid.h"
 
-#ifndef DRAW_LINES
-#define DRAW_LINES 1
+#ifndef WXGRID_DRAW_LINES
+#define WXGRID_DRAW_LINES 1
 #endif
 
 //////////////////////////////////////////////////////////////////////
 #endif
 
 //////////////////////////////////////////////////////////////////////
@@ -876,7 +876,7 @@ void wxGridWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
     wxRegion reg = GetUpdateRegion();
     m_owner->CalcCellsExposed( reg );
     m_owner->DrawGridCellArea( dc );
     wxRegion reg = GetUpdateRegion();
     m_owner->CalcCellsExposed( reg );
     m_owner->DrawGridCellArea( dc );
-#if DRAW_LINES
+#if WXGRID_DRAW_LINES
     m_owner->DrawAllGridLines( dc, reg );
 #endif
 }
     m_owner->DrawAllGridLines( dc, reg );
 #endif
 }
@@ -2621,7 +2621,7 @@ void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords )
     if ( m_colWidths[coords.GetCol()] <=0  ||
          m_rowHeights[coords.GetRow()] <= 0 ) return;
 
     if ( m_colWidths[coords.GetCol()] <=0  ||
          m_rowHeights[coords.GetRow()] <= 0 ) return;
 
-#if !DRAW_LINES
+#if !WXGRID_DRAW_LINES
     if ( m_gridLinesEnabled )
         DrawCellBorder( dc, coords );
 #endif
     if ( m_gridLinesEnabled )
         DrawCellBorder( dc, coords );
 #endif
@@ -2752,12 +2752,17 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & reg )
       CalcUnscrolledPosition( x + w, y + h, &right, &bottom );
     }
 
       CalcUnscrolledPosition( x + w, y + h, &right, &bottom );
     }
 
+    // avoid drawing grid lines past the last row and col
+    //
+    right = wxMin( right, m_colRights[m_numCols-1] );
+    bottom = wxMin( bottom, m_rowBottoms[m_numRows-1] );
+
     dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) );
 
     // horizontal grid lines
     //
     int i;
     dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) );
 
     // horizontal grid lines
     //
     int i;
-    for ( i = 0; i <= m_numRows; i++ )
+    for ( i = 0; i < m_numRows; i++ )
     {
         if ( m_rowBottoms[i] > bottom )
         {
     {
         if ( m_rowBottoms[i] > bottom )
         {
@@ -2772,7 +2777,7 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & reg )
 
     // vertical grid lines
     //
 
     // vertical grid lines
     //
-    for ( i = 0; i <= m_numCols; i++ )
+    for ( i = 0; i < m_numCols; i++ )
     {
         if ( m_colRights[i] > right )
         {
     {
         if ( m_colRights[i] > right )
         {