2006-11-30 Mike Kestner <mkestner@novell.com>
authorMike Kestner <mkestner@gmail.com>
Thu, 30 Nov 2006 15:16:06 +0000 (15:16 -0000)
committerMike Kestner <mkestner@gmail.com>
Thu, 30 Nov 2006 15:16:06 +0000 (15:16 -0000)
* ComboBox.cs: fixes for LargeChange and Maximum to get the
scroll range correct.  Fixes #79994.

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

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

index a093485a021ea1c8b53b573c6483727658369cf8..b701f1111e19c409f4fa248f2096f4d854e10856 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-30  Mike Kestner  <mkestner@novell.com>
+
+       * ComboBox.cs: fixes for LargeChange and Maximum to get the 
+       scroll range correct.  Fixes #79994.
+
 2006-11-30  Rolf Bjarne Kvinge <RKvinge@novell.com>
 
        * MdiWindowManager.cs: Update main form's text when
index 111d4c853a648592cff13289a266c3bbae94ab3b..732e60c0d5a53dd3c5b2f7d4f077a7b131b094e2 100644 (file)
@@ -1639,6 +1639,8 @@ namespace System.Windows.Forms
                                        }
                                }
                                
+                               page_size = height / owner.ItemHeight;
+
                                if (owner.Items.Count <= owner.MaxDropDownItems) {                                      
                                        if (vscrollbar_ctrl != null)
                                                vscrollbar_ctrl.Visible = false;
@@ -1658,8 +1660,11 @@ namespace System.Windows.Forms
                                                        
                                        vscrollbar_ctrl.Location = new Point (width - vscrollbar_ctrl.Width - BorderWidth - 1, 0);
 
-                                       vscrollbar_ctrl.Maximum = owner.Items.Count - (owner.DropDownStyle == ComboBoxStyle.Simple ? page_size : owner.maxdrop_items);
-                                       vscrollbar_ctrl.LargeChange = owner.MaxDropDownItems - 1;
+                                       vscrollbar_ctrl.Maximum = owner.Items.Count - 2;
+                                       int large = (owner.DropDownStyle == ComboBoxStyle.Simple ? page_size : owner.maxdrop_items) - 1;
+                                       if (large < 0)
+                                               large = 0;
+                                       vscrollbar_ctrl.LargeChange = large;
                                        show_scrollbar = vscrollbar_ctrl.Visible = true;
 
                                        int hli = HighlightedIndex;
@@ -1678,7 +1683,6 @@ namespace System.Windows.Forms
                                        textarea_drawable.Width -= vscrollbar_ctrl.Width;
 
                                last_item = LastVisibleItem ();
-                               page_size = textarea_drawable.Height / owner.ItemHeight;
                        }                       
 
                        private void Draw (Rectangle clip, Graphics dc)
@@ -1866,7 +1870,7 @@ namespace System.Windows.Forms
                                if (delta == 0 || vscrollbar_ctrl == null || !vscrollbar_ctrl.Visible)
                                        return;
 
-                               int max = vscrollbar_ctrl.Maximum;//- (page_size) + 1;
+                               int max = owner.Items.Count - page_size;
 
                                int val = vscrollbar_ctrl.Value + delta;
                                if (val > max)