void wxPropertyGrid::DrawItems( wxDC& dc,
unsigned int topy,
unsigned int bottomy,
- const wxRect* clipRect )
+ const wxRect* drawRect )
{
if ( m_frozen || m_height < 1 || bottomy < topy || !m_pState )
return;
m_pState->EnsureVirtualHeight();
- wxRect tempClipRect;
- if ( !clipRect )
+ wxRect tempDrawRect;
+ if ( !drawRect )
{
- tempClipRect = wxRect(0,topy,m_pState->m_width,bottomy);
- clipRect = &tempClipRect;
+ tempDrawRect = wxRect(0, topy,
+ m_pState->m_width,
+ bottomy);
+ drawRect = &tempDrawRect;
}
// items added check
{
if ( !m_doubleBuffer )
{
- paintFinishY = clipRect->y;
+ paintFinishY = drawRect->y;
dcPtr = NULL;
}
else
if ( dcPtr )
{
- dc.SetClippingRegion( *clipRect );
- paintFinishY = DoDrawItems( *dcPtr, clipRect, isBuffered );
+ dc.SetClippingRegion( *drawRect );
+ paintFinishY = DoDrawItems( *dcPtr, drawRect, isBuffered );
+ int drawBottomY = drawRect->y + drawRect->height;
// Clear area beyond bottomY?
- if ( paintFinishY < (clipRect->y+clipRect->height) )
+ if ( paintFinishY < drawBottomY )
{
dcPtr->SetPen(m_colEmptySpace);
dcPtr->SetBrush(m_colEmptySpace);
- dcPtr->DrawRectangle( 0, paintFinishY, m_width,
- (clipRect->y+clipRect->height) );
+ dcPtr->DrawRectangle(0, paintFinishY,
+ m_width,
+ drawBottomY );
}
+
+ dc.DestroyClippingRegion();
}
#if wxPG_DOUBLE_BUFFER
if ( bufferDC )
{
- dc.Blit( clipRect->x, clipRect->y, clipRect->width,
- clipRect->height,
+ dc.Blit( drawRect->x, drawRect->y, drawRect->width,
+ drawRect->height,
bufferDC, 0, 0, wxCOPY );
- dc.DestroyClippingRegion(); // Is this really necessary?
delete bufferDC;
}
#endif
// Just clear the area
dc.SetPen(m_colEmptySpace);
dc.SetBrush(m_colEmptySpace);
- dc.DrawRectangle(*clipRect);
+ dc.DrawRectangle(*drawRect);
}
}
}
#endif
- return y + yRelMod;
+ return y;
}
// -----------------------------------------------------------------------