]> git.saurik.com Git - wxWidgets.git/commitdiff
fix for drawing correct gridlines even on scrolled positions (wxMac)
authorStefan Csomor <csomor@advancedconcepts.ch>
Fri, 22 Apr 2005 06:53:03 +0000 (06:53 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Fri, 22 Apr 2005 06:53:03 +0000 (06:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33818 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/grid.cpp

index e6ca7a0857a75fdd0f4f7b110516478ec26c0bf9..e3169c5357a8cc04592f3a58220bdfb4dec7fb0f 100644 (file)
@@ -7146,8 +7146,10 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & WXUNUSED(reg) )
     int topRow    = internalYToRow(top);
     int rightCol  = internalXToCol(right);
     int bottomRow = internalYToRow(bottom);
-    wxRegion clippedcells(0, 0, cw, ch);
 
+#ifndef __WXMAC__
+    // CS: I don't know why suddenly unscrolled coordinates are used for clipping
+    wxRegion clippedcells(0, 0, cw, ch);
 
     int i, j, cell_rows, cell_cols;
     wxRect rect;
@@ -7171,6 +7173,30 @@ void wxGrid::DrawAllGridLines( wxDC& dc, const wxRegion & WXUNUSED(reg) )
             }
         }
     }
+#else
+    wxRegion clippedcells( left , top, right - left, bottom - top);
+
+    int i, j, cell_rows, cell_cols;
+    wxRect rect;
+
+    for (j=topRow; j<bottomRow; j++)
+    {
+        for (i=leftCol; i<rightCol; i++)
+        {
+            GetCellSize( j, i, &cell_rows, &cell_cols );
+            if ((cell_rows > 1) || (cell_cols > 1))
+            {
+                rect = CellToRect(j,i);
+                clippedcells.Subtract(rect);
+            }
+            else if ((cell_rows < 0) || (cell_cols < 0))
+            {
+                rect = CellToRect(j+cell_rows, i+cell_cols);
+                clippedcells.Subtract(rect);
+            }
+        }
+    }
+#endif
     dc.SetClippingRegion( clippedcells );
 
     dc.SetPen( wxPen(GetGridLineColour(), 1, wxSOLID) );