Merge pull request #943 from ermshiperete/bug-novell-325669
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ComboBox.cs
index 07bf3e56fb33e7343d9322d603f28da49c4dede5..fad6981b745964226a9ff363374068cfde4946ef 100644 (file)
@@ -2315,7 +2315,16 @@ namespace System.Windows.Forms
                                        return owner.Focused;
                                }
                        }
-                       
+                       protected override void Dispose(bool disposing)
+                       {
+                               if (disposing ) {
+                                       // Prevents corruption of combobox text by disposed object
+                                       owner.EnabledChanged -= OwnerEnabledChangedHandler;
+                                       owner.LostFocus -= OwnerLostFocusHandler;
+                               }
+                               base.Dispose(disposing);
+                       }
+
                        internal override bool ActivateOnShow { get { return false; } }
                }
 
@@ -2524,12 +2533,14 @@ namespace System.Windows.Forms
                                                vscrollbar_ctrl.Value = hli;
                                        }
                                }
-                               
-                               Size = new Size (width, height);
-                               textarea_drawable = ClientRectangle;
-                               textarea_drawable.Width = width;
-                               textarea_drawable.Height = height;
-                               
+
+                               var borderWidth = Hwnd.GetBorderWidth (CreateParams);
+                               var borderAdjustment = dropdown_style == ComboBoxStyle.Simple ? new Size (0, 0) :
+                                       new Size (borderWidth.top + borderWidth.bottom, borderWidth.left + borderWidth.right);
+                               Size = new Size (width, height + borderAdjustment.Height);
+                               textarea_drawable = new Rectangle (ClientRectangle.Location,
+                                       new Size (width - borderAdjustment.Width, height));
+
                                if (vscrollbar_ctrl != null && show_scrollbar)
                                        textarea_drawable.Width -= vscrollbar_ctrl.Width;