]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed wxPropertyGrid empty space rendering
authorJaakko Salli <jaakko.salli@dnainternet.net>
Sun, 11 Oct 2009 08:32:25 +0000 (08:32 +0000)
committerJaakko Salli <jaakko.salli@dnainternet.net>
Sun, 11 Oct 2009 08:32:25 +0000 (08:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/propgrid/propgrid.h
src/propgrid/propgrid.cpp

index c1008658e30c9b3b0a8dee09c50420485dbb3589..2dd01173d30d26c8bd42087a20fc68f5246b90b0 100644 (file)
@@ -1944,7 +1944,7 @@ protected:
     void CorrectEditorWidgetPosY();
 
     int DoDrawItems( wxDC& dc,
-                     const wxRect* clipRect,
+                     const wxRect* drawRect,
                      bool isBuffered ) const;
 
     /** Draws an expand/collapse (ie. +/-) button.
index 92af9d017b5fb5d707e68befec80eadc0b2d7bb6..858e15085ccdbbfec931aa9b9f200806a49953b5 100644 (file)
@@ -1833,18 +1833,20 @@ void wxPropertyGrid::DrawExpanderButton( wxDC& dc, const wxRect& rect,
 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
@@ -1864,7 +1866,7 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
         {
             if ( !m_doubleBuffer )
             {
-                paintFinishY = clipRect->y;
+                paintFinishY = drawRect->y;
                 dcPtr = NULL;
             }
             else
@@ -1882,26 +1884,29 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
 
         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
@@ -1911,7 +1916,7 @@ void wxPropertyGrid::DrawItems( wxDC& dc,
         // Just clear the area
         dc.SetPen(m_colEmptySpace);
         dc.SetBrush(m_colEmptySpace);
-        dc.DrawRectangle(*clipRect);
+        dc.DrawRectangle(*drawRect);
     }
 }
 
@@ -2384,7 +2389,7 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc,
     }
 #endif
 
-    return y + yRelMod;
+    return y;
 }
 
 // -----------------------------------------------------------------------