2009-01-02 Ivan N. Zlatev <contact@i-nz.net>
authorIvan Zlatev <ivan@ivanz.com>
Fri, 2 Jan 2009 12:37:19 +0000 (12:37 -0000)
committerIvan Zlatev <ivan@ivanz.com>
Fri, 2 Jan 2009 12:37:19 +0000 (12:37 -0000)
* DataGridView.cs: Fix crashes caused by assigning negative values to
ScrollBar.LargeIncrement when the ClientSize.Width/Height is less than
the column/row heights/widths.

svn path=/trunk/mcs/; revision=122325

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs

index 1142a77d2d09d98ee2b68bffa0d96a98e2cc2272..36647a5ad07f555d122946bf7245a0e1b5bf4ead 100644 (file)
@@ -1,3 +1,10 @@
+2009-01-02  Ivan N. Zlatev  <contact@i-nz.net>
+
+       * DataGridView.cs: Fix crashes caused by assigning negative values to 
+       ScrollBar.LargeIncrement when the ClientSize.Width/Height is less than 
+       the column/row heights/widths.
+       [Fixes bug #462684]
+
 2009-01-02  Ivan N. Zlatev  <contact@i-nz.net>
 
        * DataGridView.cs: Non-autogenerated columns that have a data property 
index bf522f7debcb109b17b2c3bdb668c805bc125e6a..09e7f96572d0a542ab81e7354bf72a63151bb484 100644 (file)
@@ -4633,13 +4633,19 @@ namespace System.Windows.Forms {
                                        horizontalScrollBar.Minimum = 0;
                                        horizontalScrollBar.Maximum = gridWidth;
                                        horizontalScrollBar.SmallChange = Columns[first_col_index].Width;
-                                       horizontalScrollBar.LargeChange = ClientSize.Width - rowHeadersWidth;
+                                       int largeChange = ClientSize.Width - rowHeadersWidth;
+                                       if (largeChange <= 0)
+                                               largeChange = ClientSize.Width;
+                                       horizontalScrollBar.LargeChange = largeChange;
                                }
                                if (verticalVisible) {
                                        verticalScrollBar.Minimum = 0;
                                        verticalScrollBar.Maximum = gridHeight;
                                        verticalScrollBar.SmallChange = first_row_height + 1;
-                                       verticalScrollBar.LargeChange = ClientSize.Height - columnHeadersHeight;
+                                       int largeChange = ClientSize.Height - columnHeadersHeight;
+                                       if (largeChange <= 0)
+                                               largeChange = ClientSize.Height;
+                                       verticalScrollBar.LargeChange = largeChange;
                                }
                        }