From 8dd4f53663d62aba88bf9c65e292fe25a6bb96aa Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 21 Feb 2000 14:31:55 +0000 Subject: [PATCH] Michaels change to OnEraseBackground() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/grid.cpp | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 9e0952c3b5..8e30520e94 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -1965,10 +1965,41 @@ void wxGridWindow::OnKeyDown( wxKeyEvent& event ) if ( !m_owner->ProcessEvent( event ) ) event.Skip(); } -void wxGridWindow::OnEraseBackground(wxEraseEvent&) -{ } - - +// 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() ); + } +} ////////////////////////////////////////////////////////////////////// -- 2.47.2