Author: jpobst
Date: 2007-06-06 09:44:54 -0400 (Wed, 06 Jun 2007)
New Revision: 78737

Added:
   
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
Modified:
   trunk/mcs/class/Managed.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MouseEventArgs.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextRenderer.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
   trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonTest.cs
   trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
Log:
2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>

        * Button.cs: Override GetPreferredSizeCore.
        * ButtonBase.cs: PerformLayout after changing properties that can affect
        AutoSize.  Simplify some mouse/keyboard code.
        * Control.cs: PerformLayout after changing Padding if AutoSize = true.
        * MouseEventArgs.cs: Make Location internal for 1.1.
        * TextRenderer.cs: Make MeasureTextInternal (string, Font, bool) 
internal for 1.1.
        * Theme.cs: Add CalculateButtonAutoSize.
        * ThemeWin32Classic.cs: Implement CalculateButtonAutoSize.

2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>

        * ButtonBaseTest.cs: Add test for default values.
        * ButtonTest.cs: Add test for default values, add test for AutoSize.

2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>

        * System.Windows.Forms_test.dll.sources: Add ButtonBaseTest.cs. 

Modified: trunk/mcs/class/Managed.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2007-06-06 13:42:57 UTC 
(rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2007-06-06 13:44:54 UTC 
(rev 78737)
@@ -1,3 +1,7 @@
+2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * System.Windows.Forms_test.dll.sources: Add ButtonBaseTest.cs. 
+
 2007-06-05  Andreia Gaita  <[EMAIL PROTECTED]>
 
        * build-csproj, build-csproj2k5, swf.csproj, SWF2k5.csproj: 

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs        
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Button.cs        
2007-06-06 13:44:54 UTC (rev 78737)
@@ -192,6 +192,14 @@
                        else if (this.FlatStyle == FlatStyle.Popup)
                                ThemeEngine.Current.DrawPopupButton 
(pevent.Graphics, this, text_rectangle, image_rectangle, pevent.ClipRectangle);
                }
+
+               internal override Size GetPreferredSizeCore (Size proposedSize)
+               {
+                       if (this.AutoSize)
+                               return 
ThemeEngine.Current.CalculateButtonAutoSize (this);
+                               
+                       return base.GetPreferredSizeCore (proposedSize);
+               }
 #endif
                #endregion      // Internal methods
        }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs    
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs    
2007-06-06 13:44:54 UTC (rev 78737)
@@ -194,7 +194,13 @@
                                        this.image_index = -1;
                                        this.image_key = string.Empty;
                                        this.image_list = null;
-                                       Invalidate();
+
+#if NET_2_0
+                                       if (this.AutoSize && this.Parent != 
null)
+                                               this.Parent.PerformLayout 
(this, "TextImageRelation");
+#endif
+
+                                       Invalidate ();
                                }
                        }
                }
@@ -382,6 +388,12 @@
 
                                if (this.text_image_relation != value) {
                                        this.text_image_relation = value;
+                                       
+#if NET_2_0
+                                       if (this.AutoSize && this.Parent != 
null)
+                                               this.Parent.PerformLayout 
(this, "TextImageRelation");
+#endif
+                                       
                                        this.Invalidate ();
                                }
                        }
@@ -500,9 +512,8 @@
                protected override void OnKeyDown (KeyEventArgs kevent)
                {
                        if (kevent.KeyData == Keys.Space) {
-                               enter_state = is_entered;
-                               is_entered = true;
-                               OnMouseDown (new MouseEventArgs 
(MouseButtons.Left, 1, 2, 2, 0));
+                               is_pressed = true;
+                               Invalidate ();
                                kevent.Handled = true;
                        }
                        
@@ -512,8 +523,9 @@
                protected override void OnKeyUp (KeyEventArgs kevent)
                {
                        if (kevent.KeyData == Keys.Space) {
-                               OnMouseUp (new MouseEventArgs 
(MouseButtons.Left, 1, 2, 2, 0));
-                               is_entered = enter_state;
+                               is_pressed = false;
+                               Invalidate ();
+                               OnClick (EventArgs.Empty);
                                kevent.Handled = true;
                        }
                        
@@ -530,7 +542,6 @@
                {
                        if ((mevent.Button & MouseButtons.Left) != 0) {
                                is_pressed = true;
-                               this.Capture = true;
                                Invalidate ();
                        }
 
@@ -539,26 +550,24 @@
 
                protected override void OnMouseEnter (EventArgs e)
                {
+                       is_entered = true;
                        Invalidate ();
                        base.OnMouseEnter (e);
                }
 
                protected override void OnMouseLeave (EventArgs e)
                {
+                       is_entered = false;
                        Invalidate ();
                        base.OnMouseLeave (e);
                }
 
                protected override void OnMouseMove (MouseEventArgs mevent) {
-                       bool    inside = false;
-                       bool    redraw = false;
+                       bool inside = false;
+                       bool redraw = false;
 
-                       if (mevent.X >= 0 &&
-                           mevent.Y >= 0 &&
-                           mevent.X < this.ClientSize.Width &&
-                           mevent.Y <= this.ClientSize.Height) {
+                       if (ClientRectangle.Contains (mevent.Location))
                                inside = true;
-                       }
 
                        // If the button was pressed and we leave, release the 
button press and vice versa
                        if ((mevent.Button & MouseButtons.Left) != 0) {
@@ -569,35 +578,30 @@
                        }
 
                        if (is_entered != inside) {
-                               is_entered = inside;
+                               is_entered = inside;
                                redraw = true;
                        }
 
                        if (redraw)
                                Invalidate ();
 
-                       base.OnMouseMove(mevent);
+                       base.OnMouseMove (mevent);
                }
 
                protected override void OnMouseUp (MouseEventArgs mevent)
                {
                        if (this.Capture && ((mevent.Button & 
MouseButtons.Left) != 0)) {
                                this.Capture = false;
-                               
+
                                if (is_pressed) {
                                        is_pressed = false;
                                        Invalidate ();
-                                       Update ();
                                } else if ((this.flat_style == FlatStyle.Flat) 
|| (this.flat_style == FlatStyle.Popup)) {
                                        Invalidate ();
                                }
 
-                               if (mevent.X >= 0 &&
-                                   mevent.Y >= 0 &&
-                                   mevent.X < this.ClientSize.Width &&
-                                   mevent.Y <= this.ClientSize.Height) {
+                               if (ClientRectangle.Contains (mevent.Location))
                                        OnClick (EventArgs.Empty);
-                               }
                        }
                        
                        base.OnMouseUp (mevent);

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-06-06 13:44:54 UTC (rev 78737)
@@ -1,3 +1,14 @@
+2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * Button.cs: Override GetPreferredSizeCore.
+       * ButtonBase.cs: PerformLayout after changing properties that can affect
+       AutoSize.  Simplify some mouse/keyboard code.
+       * Control.cs: PerformLayout after changing Padding if AutoSize = true.
+       * MouseEventArgs.cs: Make Location internal for 1.1.
+       * TextRenderer.cs: Make MeasureTextInternal (string, Font, bool) 
internal for 1.1.
+       * Theme.cs: Add CalculateButtonAutoSize.
+       * ThemeWin32Classic.cs: Implement CalculateButtonAutoSize.
+
 2007-06-05  Miguel de Icaza  <[EMAIL PROTECTED]>
 
        * TreeNodeCollection.cs: Applied patch from Neil Cawse <[EMAIL 
PROTECTED]>

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs       
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs       
2007-06-06 13:44:54 UTC (rev 78737)
@@ -2884,7 +2884,12 @@
                                if (padding != value) {
                                        padding = value;
                                        OnPaddingChanged (EventArgs.Empty);
-                                       PerformLayout ();
+                                       
+                                       // Changing padding generally requires 
a new size
+                                       if (this.AutoSize && this.Parent != 
null)
+                                               parent.PerformLayout (this, 
"Padding");
+                                       else
+                                               PerformLayout (this, "Padding");
                                }
                        }
                }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MouseEventArgs.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MouseEventArgs.cs    
    2007-06-06 13:42:57 UTC (rev 78736)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/MouseEventArgs.cs    
    2007-06-06 13:44:54 UTC (rev 78737)
@@ -79,12 +79,15 @@
                        }
                }
 #if NET_2_0
-               public Point Location {
+               public
+#else
+               internal
+#endif
+               Point Location {
                        get {
                                return new Point (this.x, this.y);
                        }
                }
-#endif
                #endregion      // Public Instance Properties
        }
 }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextRenderer.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextRenderer.cs  
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextRenderer.cs  
2007-06-06 13:44:54 UTC (rev 78737)
@@ -315,6 +315,11 @@
                        DrawTextInternal (dc, text, font, bounds, foreColor, 
Color.Transparent, flags, useDrawString);
                }
 
+               internal static Size MeasureTextInternal (string text, Font 
font, bool useMeasureString)
+               {
+                       return MeasureTextInternal (Graphics.FromImage 
(measure_bitmap), text, font, Size.Empty, TextFormatFlags.Default, 
useMeasureString);
+               }
+
 #if NET_2_0
                internal static void DrawTextInternal (IDeviceContext dc, 
string text, Font font, Point pt, Color foreColor, Color backColor, 
TextFormatFlags flags, bool useDrawString)
                {
@@ -322,11 +327,6 @@
                        DrawTextInternal (dc, text, font, new Rectangle (pt, 
sz), foreColor, backColor, flags, useDrawString);
                }
 
-               internal static Size MeasureTextInternal (string text, Font 
font, bool useMeasureString)
-               {
-                       return MeasureTextInternal (Graphics.FromImage 
(measure_bitmap), text, font, Size.Empty, TextFormatFlags.Default, 
useMeasureString);
-               }
-
                internal static Size MeasureTextInternal (IDeviceContext dc, 
string text, Font font, bool useMeasureString)
                {
                        return MeasureTextInternal (dc, text, font, Size.Empty, 
TextFormatFlags.Default, useMeasureString);
@@ -405,7 +405,6 @@
                        //        sf.FormatFlags |= 
StringFormatFlags.DirectionRightToLeft;
                        if ((flags & TextFormatFlags.NoClipping) == 
TextFormatFlags.NoClipping)
                                sf.FormatFlags |= StringFormatFlags.NoClip;
-                       //sf.FormatFlags |= StringFormatFlags.NoClip;
 
                        if ((flags & TextFormatFlags.WordBreak) == 0)
                                sf.FormatFlags |= StringFormatFlags.LineLimit;
@@ -491,4 +490,4 @@
 #endif
 #endregion
        }
-}
\ No newline at end of file
+}

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs 
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs 
2007-06-06 13:44:54 UTC (rev 78737)
@@ -696,7 +696,10 @@
                #endregion      // OwnerDraw Support
 
                #region Button
-               public abstract void CalculateButtonTextAndImageLayout (Button 
b, out Rectangle textRectangle, out Rectangle imageRectangle);
+#if NET_2_0
+               public abstract Size CalculateButtonAutoSize (Button button);
+#endif
+               public abstract void CalculateButtonTextAndImageLayout 
(ButtonBase b, out Rectangle textRectangle, out Rectangle imageRectangle);
                public abstract void DrawButton (Graphics g, Button b, 
Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
                public abstract void DrawFlatButton (Graphics g, Button b, 
Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
                public abstract void DrawPopupButton (Graphics g, Button b, 
Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs 
    2007-06-06 13:42:57 UTC (rev 78736)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs 
    2007-06-06 13:44:54 UTC (rev 78737)
@@ -253,7 +253,7 @@
 
                public virtual void DrawFlatButtonText (Graphics g, Button 
button, Rectangle textBounds)
                {
-                       // No changes from Standard for image for this theme
+                       // No changes from Standard for text for this theme
                        DrawButtonText (g, button, textBounds);
                }
                #endregion
@@ -311,8 +311,46 @@
                #endregion
 
                #region Button Layout Calculations
-               public override void CalculateButtonTextAndImageLayout (Button 
button, out Rectangle textRectangle, out Rectangle imageRectangle)
+#if NET_2_0
+               public override Size CalculateButtonAutoSize (Button button)
                {
+                       Size ret_size = Size.Empty;
+                       Size text_size = TextRenderer.MeasureTextInternal 
(button.Text, button.Font, button.UseCompatibleTextRendering);
+                       Size image_size = button.Image == null ? Size.Empty : 
button.Image.Size;
+                       
+                       // Pad the text size
+                       if (button.Text.Length != 0) {
+                               text_size.Height += 4;
+                               text_size.Width += 4;
+                       }
+                       
+                       switch (button.TextImageRelation) {
+                               case TextImageRelation.Overlay:
+                                       ret_size.Height = Math.Max 
(button.Text.Length == 0 ? 0 : text_size.Height, image_size.Height);
+                                       ret_size.Width = Math.Max 
(text_size.Width, image_size.Width);
+                                       break;
+                               case TextImageRelation.ImageAboveText:
+                               case TextImageRelation.TextAboveImage:
+                                       ret_size.Height = text_size.Height + 
image_size.Height;
+                                       ret_size.Width = Math.Max 
(text_size.Width, image_size.Width);
+                                       break;
+                               case TextImageRelation.ImageBeforeText:
+                               case TextImageRelation.TextBeforeImage:
+                                       ret_size.Height = Math.Max 
(text_size.Height, image_size.Height);
+                                       ret_size.Width = text_size.Width + 
image_size.Width;
+                                       break;
+                       }
+
+                       // Pad the result
+                       ret_size.Height += (button.Padding.Vertical + 6);
+                       ret_size.Width += (button.Padding.Horizontal + 6);
+                       
+                       return ret_size;
+               }
+#endif
+
+               public override void CalculateButtonTextAndImageLayout 
(ButtonBase button, out Rectangle textRectangle, out Rectangle imageRectangle)
+               {
                        Image image = button.Image;
                        string text = button.Text;
                        Rectangle content_rect = button.ClientRectangle;

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2007-06-06 13:44:54 UTC (rev 78737)
@@ -8,6 +8,7 @@
 System.Windows.Forms/BindingMemberInfoTest.cs
 System.Windows.Forms/BindingNavigatorTest.cs
 System.Windows.Forms/BindingSourceTest.cs
+System.Windows.Forms/ButtonBaseTest.cs
 System.Windows.Forms/ButtonTest.cs
 System.Windows.Forms/CheckBoxEventTest.cs
 System.Windows.Forms/CheckBoxTest.cs

Added: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
   2007-06-06 13:42:57 UTC (rev 78736)
+++ 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonBaseTest.cs
   2007-06-06 13:44:54 UTC (rev 78737)
@@ -0,0 +1,48 @@
+//
+// Copyright (c) 2007 Novell, Inc.
+//
+// Authors:
+//      Jonathan Pobst  <[EMAIL PROTECTED]>
+//
+
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+using NUnit.Framework;
+
+namespace MonoTests.System.Windows.Forms
+{
+       [TestFixture]
+       public class ButtonBaseTest
+       {
+               [Test]
+               public void Constructor ()
+               {
+                       NullButton b = new NullButton ();
+                       
+                       Assert.AreEqual (SystemColors.Control, b.BackColor, 
"A4");
+                       Assert.AreEqual (FlatStyle.Standard, b.FlatStyle, "A6");
+                       Assert.AreEqual (null, b.Image, "A7");
+                       Assert.AreEqual (ContentAlignment.MiddleCenter, 
b.ImageAlign, "A8");
+                       Assert.AreEqual (-1, b.ImageIndex, "A9");
+                       Assert.AreEqual (null, b.ImageList, "A11");
+                       Assert.AreEqual (ImeMode.Disable, b.ImeMode, "A12");
+                       Assert.AreEqual (string.Empty, b.Text, "A13");
+                       Assert.AreEqual (ContentAlignment.MiddleCenter, 
b.TextAlign, "A14");
+
+#if NET_2_0
+                       Assert.AreEqual (false, b.AutoEllipsis, "A1");
+                       Assert.AreEqual (false, b.AutoSize, "A2");
+                       Assert.AreEqual (string.Empty, b.ImageKey, "A10");
+                       Assert.AreEqual (TextImageRelation.Overlay, 
b.TextImageRelation, "A15");
+                       Assert.AreEqual (true, b.UseCompatibleTextRendering, 
"A16");
+                       Assert.AreEqual (true, b.UseMnemonic, "A17");
+                       Assert.AreEqual (true, b.UseVisualStyleBackColor, 
"A18");
+#endif
+               }
+               
+               private class NullButton : ButtonBase
+               {
+               }
+       }
+}

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonTest.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonTest.cs   
    2007-06-06 13:42:57 UTC (rev 78736)
+++ 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ButtonTest.cs   
    2007-06-06 13:44:54 UTC (rev 78737)
@@ -17,11 +17,31 @@
        public class ButtonTest
        {
                [Test]
-               public void FlatStyleTest ()
+               public void Constructor ()
                {
-                       Button B1 = new Button ();
-                       Assert.AreEqual (FlatStyle.Standard, B1.FlatStyle, 
"#1");
+                       Button b = new Button ();
+                       
+                       Assert.AreEqual (SystemColors.Control, b.BackColor, 
"A4");
+                       Assert.AreEqual (FlatStyle.Standard, b.FlatStyle, "A6");
+                       Assert.AreEqual (null, b.Image, "A7");
+                       Assert.AreEqual (ContentAlignment.MiddleCenter, 
b.ImageAlign, "A8");
+                       Assert.AreEqual (-1, b.ImageIndex, "A9");
+                       Assert.AreEqual (null, b.ImageList, "A11");
+                       Assert.AreEqual (ImeMode.Disable, b.ImeMode, "A12");
+                       Assert.AreEqual (string.Empty, b.Text, "A13");
+                       Assert.AreEqual (ContentAlignment.MiddleCenter, 
b.TextAlign, "A14");
+
+#if NET_2_0
+                       Assert.AreEqual (false, b.AutoEllipsis, "A1");
+                       Assert.AreEqual (false, b.AutoSize, "A2");
+                       Assert.AreEqual (string.Empty, b.ImageKey, "A10");
+                       Assert.AreEqual (TextImageRelation.Overlay, 
b.TextImageRelation, "A15");
+                       Assert.AreEqual (true, b.UseCompatibleTextRendering, 
"A16");
+                       Assert.AreEqual (true, b.UseMnemonic, "A17");
+                       Assert.AreEqual (true, b.UseVisualStyleBackColor, 
"A18");
+#endif
                }
+               
 #if NET_2_0
                [Test]
                public void FlatButtonAppearanceTest ()
@@ -58,6 +78,84 @@
                }
 
                [Test]
+               public void BehaviorAutoSize ()
+               {
+                       Form f = new Form ();
+                       f.ShowInTaskbar = false;
+                       
+                       f.Show ();
+                       
+                       Image i = new Bitmap (20, 20);
+                       String s = "My test string";
+                       
+                       Button b = new Button ();
+                       Size s_size = TextRenderer.MeasureText (s, new Button 
().Font);
+                       
+                       b.UseCompatibleTextRendering = false;
+                       b.AutoSize = true;
+                       b.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+                       b.Text = s;
+                       f.Controls.Add (b);
+                       
+                       // Text only
+                       b.TextImageRelation = TextImageRelation.Overlay;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + 10), b.Size, "A1");
+                       b.TextImageRelation = TextImageRelation.ImageAboveText;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + 10), b.Size, "A2");
+                       b.TextImageRelation = TextImageRelation.ImageBeforeText;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + 10), b.Size, "A3");
+                       b.TextImageRelation = TextImageRelation.TextAboveImage;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + 10), b.Size, "A4");
+                       b.TextImageRelation = TextImageRelation.TextBeforeImage;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + 10), b.Size, "A5");
+                       
+                       // Text and Image
+                       b.Image = i;
+                       b.TextImageRelation = TextImageRelation.Overlay;
+                       Assert.AreEqual (new Size (s_size.Width + 10, i.Height 
+ 6), b.Size, "A6");
+                       b.TextImageRelation = TextImageRelation.ImageAboveText;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + i.Height + 10), b.Size, "A7");
+                       b.TextImageRelation = TextImageRelation.ImageBeforeText;
+                       Assert.AreEqual (new Size (s_size.Width + i.Width + 10, 
i.Height + 6), b.Size, "A8");
+                       b.TextImageRelation = TextImageRelation.TextAboveImage;
+                       Assert.AreEqual (new Size (s_size.Width + 10, 
s_size.Height + i.Height + 10), b.Size, "A9");
+                       b.TextImageRelation = TextImageRelation.TextBeforeImage;
+                       Assert.AreEqual (new Size (s_size.Width + i.Width + 10, 
i.Height + 6), b.Size, "A10");
+
+                       // Image only
+                       b.Text = string.Empty;
+                       b.TextImageRelation = TextImageRelation.Overlay;
+                       Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), 
b.Size, "A11");
+                       b.TextImageRelation = TextImageRelation.ImageAboveText;
+                       Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), 
b.Size, "A12");
+                       b.TextImageRelation = TextImageRelation.ImageBeforeText;
+                       Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), 
b.Size, "A13");
+                       b.TextImageRelation = TextImageRelation.TextAboveImage;
+                       Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), 
b.Size, "A14");
+                       b.TextImageRelation = TextImageRelation.TextBeforeImage;
+                       Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), 
b.Size, "A15");
+                       
+                       // Neither
+                       b.Image = null;
+                       b.TextImageRelation = TextImageRelation.Overlay;
+                       Assert.AreEqual (new Size (6, 6), b.Size, "A16");
+                       b.TextImageRelation = TextImageRelation.ImageAboveText;
+                       Assert.AreEqual (new Size (6, 6), b.Size, "A17");
+                       b.TextImageRelation = TextImageRelation.ImageBeforeText;
+                       Assert.AreEqual (new Size (6, 6), b.Size, "A18");
+                       b.TextImageRelation = TextImageRelation.TextAboveImage;
+                       Assert.AreEqual (new Size (6, 6), b.Size, "A19");
+                       b.TextImageRelation = TextImageRelation.TextBeforeImage;
+                       Assert.AreEqual (new Size (6, 6), b.Size, "A20");
+                       
+                       // Padding
+                       b.Padding = new Padding (5, 10, 15, 20);
+                       Assert.AreEqual (new Size (6 + b.Padding.Horizontal, 6 
+ b.Padding.Vertical), b.Size, "A21");
+
+                       f.Dispose ();
+               }
+
+               [Test]
                public void BehaviorImageList ()
                {
                        // Basically, this shows that whichever of 
[Image|ImageIndex|ImageKey]

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-06-06 13:42:57 UTC (rev 78736)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-06-06 13:44:54 UTC (rev 78737)
@@ -1,3 +1,8 @@
+2007-06-06  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * ButtonBaseTest.cs: Add test for default values.
+       * ButtonTest.cs: Add test for default values, add test for AutoSize.
+
 2007-06-04  Gert Driesen  <[EMAIL PROTECTED]>
 
        * PropertyGridTest.cs: Added test for bug #81796, and reworked

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to