]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxGrid::DrawGridSpace function to suppress junk beyond last
authorMichael Bedward <mbedward@ozemail.com.au>
Wed, 23 Feb 2000 07:15:04 +0000 (07:15 +0000)
committerMichael Bedward <mbedward@ozemail.com.au>
Wed, 23 Feb 2000 07:15:04 +0000 (07:15 +0000)
row and col of grid.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/grid.h
src/generic/grid.cpp

index fec27d651cf108c67eae18685196277b0b2b84ad..653e37f8e05a30d123d4acfb348747a13d2872fb 100644 (file)
@@ -902,6 +902,7 @@ public:
     bool DeleteCols( int pos = 0, int numCols = 1, bool updateLabels=TRUE );
 
     void DrawGridCellArea( wxDC& dc );
+    void DrawGridSpace( wxDC& dc );
     void DrawCellBorder( wxDC& dc, const wxGridCellCoords& );
     void DrawAllGridLines( wxDC& dc, const wxRegion & reg );
     void DrawCell( wxDC& dc, const wxGridCellCoords& );
index e5b6bb0088840873da3c6d72eca4ab5b58e4b77b..4b3af6bc03ab2632da024e304f487b7a5617e99e 100644 (file)
@@ -2579,6 +2579,7 @@ void wxGridWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
     wxRegion reg = GetUpdateRegion();
     m_owner->CalcCellsExposed( reg );
     m_owner->DrawGridCellArea( dc );
+    m_owner->DrawGridSpace( dc );
 #if WXGRID_DRAW_LINES
     m_owner->DrawAllGridLines( dc, reg );
 #endif
@@ -2608,40 +2609,9 @@ void wxGridWindow::OnKeyDown( wxKeyEvent& event )
     if ( !m_owner->ProcessEvent( event ) ) event.Skip();
 }
 
-// We are trapping erase background events to reduce flicker under MSW
-// and GTK but this can leave junk in the space beyond the last row and
-// col.  So here we paint these spaces if they are visible.
-//
+
 void wxGridWindow::OnEraseBackground(wxEraseEvent& event)
 {
-    int cw, ch;
-    GetClientSize( &cw, &ch );
-
-    int right, bottom;
-    m_owner->CalcUnscrolledPosition( cw, ch, &right, &bottom );
-
-    wxRect rightRect;
-    rightRect = m_owner->CellToRect( 0, m_owner->GetNumberCols()-1 );
-
-    wxRect bottomRect;
-    bottomRect = m_owner->CellToRect( m_owner->GetNumberRows()-1, 0 );
-
-    if ( right > rightRect.GetRight()  ||  bottom > bottomRect.GetBottom() )
-    {
-        int left, top;
-        m_owner->CalcUnscrolledPosition( 0, 0, &left, &top );
-
-        wxClientDC dc( this );
-        m_owner->PrepareDC( dc );
-        dc.SetBrush( wxBrush(m_owner->GetDefaultCellBackgroundColour(), wxSOLID) );
-        dc.SetPen( *wxTRANSPARENT_PEN );
-
-        if ( right > rightRect.GetRight() )
-            dc.DrawRectangle( rightRect.GetRight()+1, top, right - rightRect.GetRight(), ch );
-
-        if ( bottom > bottomRect.GetBottom() )
-            dc.DrawRectangle( left, bottomRect.GetBottom()+1, cw, bottom - bottomRect.GetBottom() );
-    }
 }
 
 
@@ -4829,6 +4799,37 @@ void wxGrid::DrawGridCellArea( wxDC& dc )
 }
 
 
+void wxGrid::DrawGridSpace( wxDC& dc )
+{
+    if ( m_numRows  &&  m_numCols )
+    {
+        int cw, ch;
+        m_gridWin->GetClientSize( &cw, &ch );
+
+        int right, bottom;
+        CalcUnscrolledPosition( cw, ch, &right, &bottom );
+
+        if ( right > GetColRight(m_numCols-1)  ||
+             bottom > GetRowBottom(m_numRows-1) )
+        {
+            int left, top;
+            CalcUnscrolledPosition( 0, 0, &left, &top );
+
+            dc.SetBrush( wxBrush(GetDefaultCellBackgroundColour(), wxSOLID) );
+            dc.SetPen( *wxTRANSPARENT_PEN );
+
+            if ( right > GetColRight(m_numCols-1) )
+                dc.DrawRectangle( GetColRight(m_numCols-1)+1, top,
+                                  right - GetColRight(m_numCols-1), ch );
+
+            if ( bottom > GetRowBottom(m_numRows-1) )
+                dc.DrawRectangle( left, GetRowBottom(m_numRows-1)+1,
+                                  cw, bottom - GetRowBottom(m_numRows-1) );
+        }
+    }
+}
+
+
 void wxGrid::DrawCell( wxDC& dc, const wxGridCellCoords& coords )
 {
     int row = coords.GetRow();
@@ -5401,7 +5402,6 @@ void wxGrid::HideCellEditControl()
 }
 
 
-
 void wxGrid::SaveEditControlValue()
 {
     if ( IsCellEditControlEnabled() )