Attached patch adds ShouldSerializePROPERTYNAME for several properties
in order to prevent default value serialization during design time
serialization. ChangeLog entry included. Please review.

--
Ivan N. Zlatev

Web: http://www.i-nZ.net
"It's all some kind of whacked out conspiracy."
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs	(revision 82206)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs	(working copy)
@@ -2049,7 +2049,7 @@
 
 #if NET_2_0
 		[Browsable (false)]
-		[DefaultValue ("{X=0,Y=0}")]
+		[DefaultValue (typeof (Point), "0, 0")]
 		[EditorBrowsable (EditorBrowsableState.Advanced)]
 		public virtual Point AutoScrollOffset {
 			get {
@@ -2102,6 +2102,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeMaximumSize ()
+		{
+			return this.MaximumSize != DefaultMaximumSize;
+		}
+
 		public virtual Size MinimumSize {
 			get {
 				return minimum_size;
@@ -2113,6 +2118,11 @@
 				}
 			}
 		}
+
+		internal bool ShouldSerializeMinimumSize ()
+		{
+			return this.MinimumSize != DefaultMinimumSize;
+		}
 #endif // NET_2_0
 
 		[DispId(-501)]
@@ -2144,6 +2154,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeBackColor ()
+		{
+			return this.BackColor != DefaultBackColor;
+		}
+
 		[Localizable(true)]
 		[DefaultValue(null)]
 		[MWFCategory("Appearance")]
@@ -2460,6 +2475,10 @@
 			}
 		}
 
+		internal bool ShouldSerializeCursor ()
+		{
+			return this.Cursor != Cursors.Default;
+		}
 
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
 		[ParenthesizePropertyName(true)]
@@ -2596,6 +2615,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeEnabled ()
+		{
+			return this.Enabled != true;
+		}
+
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -2635,6 +2659,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeFont ()
+		{
+			return !this.Font.Equals (DefaultFont);
+		}
+
 		[DispId(-513)]
 		[MWFCategory("Appearance")]
 		public virtual Color ForeColor {
@@ -2657,6 +2686,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeForeColor ()
+		{
+			return this.ForeColor != DefaultForeColor;
+		}
+
 		[DispId(-515)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -2724,6 +2758,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeImeMode ()
+		{
+			return this.ImeMode != ImeMode.NoControl;
+		}
+
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
@@ -2822,6 +2861,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeLocation ()
+		{
+			return this.Location != new Point (0, 0);
+		}
+
 #if NET_2_0
 		[Localizable (true)]
 		public Padding Margin {
@@ -2833,6 +2877,11 @@
 				}
 			}
 		}
+
+		internal bool ShouldSerializeMargin ()
+		{
+			return this.Margin != DefaultMargin;
+		}
 #endif
 
 		[Browsable(false)]
@@ -2866,6 +2915,11 @@
 				}
 			}
 		}
+
+		internal bool ShouldSerializePadding ()
+		{
+			return this.Padding != DefaultPadding;
+		}
 #endif
 
 		[Browsable(false)]
@@ -2996,6 +3050,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeRightToLeft ()
+		{
+			return this.RightToLeft != RightToLeft.No;
+		}
+
 		[EditorBrowsable(EditorBrowsableState.Advanced)]
 		public override ISite Site {
 			get {
@@ -3017,6 +3076,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeSite ()
+		{
+			return false;
+		}
+
 		[Localizable(true)]
 		[MWFCategory("Layout")]
 		public Size Size {
@@ -3029,6 +3093,11 @@
 			}
 		}
 
+		internal virtual bool ShouldSerializeSize ()
+		{
+			return this.Size != DefaultSize;
+		}
+
 		[Localizable(true)]
 		[MergableProperty(false)]
 		[MWFCategory("Behavior")]
@@ -3101,7 +3170,7 @@
 				}
 			}
 		}
-		
+
 		internal virtual void UpdateWindowText ()
 		{
 			if (!IsHandleCreated) {
@@ -3177,6 +3246,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeVisible ()
+		{
+			return this.Visible != true;
+		}
+
 		[EditorBrowsable(EditorBrowsableState.Always)]
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs	(revision 82206)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/ButtonBase.cs	(working copy)
@@ -209,6 +209,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeImage ()
+		{
+			return this.Image != null;
+		}
+
 		[Localizable(true)]
 		[DefaultValue(ContentAlignment.MiddleCenter)]
 		[MWFDescription("Sets the alignment of the image to be displayed on button face"), MWFCategory("Appearance")]
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog	(revision 82283)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2007-07-19  Ivan N. Zlatev  <[EMAIL PROTECTED]>
+
+	* Control.cs, Form.cs, ContainerControl.cs, 
+	ScrollableControl.cs, ButtonBase.cs:  Added ShouldSerialize 
+	for misc properties.
+
 2007-07-18  Jonathan Pobst  <[EMAIL PROTECTED]>
 
 	* ToolStripContentPanel.cs: Support System renderer.
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs	(revision 82206)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/Form.cs	(working copy)
@@ -507,6 +507,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeAutoScroll ()
+		{
+			return this.AutoScroll != false;
+		}
+
 #if NET_2_0
 		[Browsable (true)]
 		[EditorBrowsable (EditorBrowsableState.Always)]
@@ -520,6 +525,11 @@
 				}
 			}
 		}
+
+		internal bool ShouldSerializeAutoSize ()
+		{
+			return this.AutoSize != false;
+		}
 		
 		[Browsable (true)]
 		[Localizable (true)]
@@ -693,6 +703,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeIcon ()
+		{
+			return this.Icon != default_icon;
+		}
+
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public bool IsMdiChild {
@@ -786,7 +801,7 @@
 			}
 		}
 
-		[DefaultValue("{Width=0, Height=0}")]
+		[DefaultValue(typeof (Size),"0, 0")]
 		[Localizable(true)]
 		[RefreshProperties(RefreshProperties.Repaint)]
 		[MWFCategory("Layout")]
@@ -1223,6 +1238,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeTransparencyKey ()
+		{
+			return this.TransparencyKey != Color.Empty;
+		}
+
 		[DefaultValue(FormWindowState.Normal)]
 		[MWFCategory("Layout")]
 		public FormWindowState WindowState {
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs	(revision 82206)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/ContainerControl.cs	(working copy)
@@ -588,6 +588,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeAutoValidate ()
+		{
+			return this.AutoValidate != AutoValidate.Inherit;
+		}
+
 		static object OnValidateChanged = new object ();
 
 		protected virtual void OnAutoValidateChanged (EventArgs e)
Index: mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollableControl.cs
===================================================================
--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollableControl.cs	(revision 82206)
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollableControl.cs	(working copy)
@@ -334,6 +334,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeAutoScrollMargin ()
+		{
+			return this.AutoScrollMargin != new Size (0, 0);
+		}
+
 		[Localizable(true)]
 		[MWFCategory("Layout")]
 		public Size AutoScrollMinSize {
@@ -349,6 +354,11 @@
 			}
 		}
 
+		internal bool ShouldSerializeAutoScrollMinSize ()
+		{
+			return this.AutoScrollMinSize != new Size (0, 0);
+		}
+
 		[Browsable(false)]
 		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 		public Point AutoScrollPosition {
_______________________________________________
Mono-winforms-list maillist  -  Mono-winforms-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to