Răsfoiți Sursa

* TreeView.cs: Modified DoubleBuffered to just use the base
implementation.
* TreeViewTest.cs: Added test for DoubleBuffered.

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

Gert Driesen 18 ani în urmă
părinte
comite
154d2dc0b8

+ 5 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog

@@ -1,3 +1,8 @@
+2007-05-18  Gert Driesen  <[email protected]>
+
+	* TreeView.cs: Modified DoubleBuffered to just use the base
+	implementation.
+
 2007-05-18  Jackson Harper  <[email protected]>
 
 	* TreeView.cs: Set the top node to the last child node when

+ 2 - 6
mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs

@@ -548,12 +548,8 @@ namespace System.Windows.Forms {
 		/// According to MSDN this property has no effect on the treeview
 		[EditorBrowsable (EditorBrowsableState.Never)]
 		protected override bool DoubleBuffered {
-			get {
-				// This returns true on MS, but MSDN says it has no effect, and using double
-				// buffering breaks scrolling
-				return false;
-			}
-			set { /* whatever */ }
+			get { return base.DoubleBuffered; }
+			set { base.DoubleBuffered = value; }
 		}
 #endif
 

+ 4 - 0
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog

@@ -1,3 +1,7 @@
+2007-05-18  Gert Driesen  <[email protected]>
+
+	* TreeViewTest.cs: Added test for DoubleBuffered.
+
 2007-05-18  Jonathan Pobst  <[email protected]>
 
 	* KeysConverterTest.cs: Added.

+ 36 - 0
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeViewTest.cs

@@ -30,6 +30,26 @@ namespace MonoTests.System.Windows.Forms
 			Assert.AreEqual (tv.SelectedNode, null, "#4");
 		}
 
+#if NET_2_0
+		[Test] // bug #81424
+		public void DoubleBuffered ()
+		{
+			MockTreeView tv = new MockTreeView ();
+			Assert.IsFalse (tv.IsDoubleBuffered, "#A1");
+			Assert.IsTrue (tv.GetControlStyle (ControlStyles.AllPaintingInWmPaint), "#A2");
+			Assert.IsFalse (tv.GetControlStyle (ControlStyles.DoubleBuffer), "#A3");
+			Assert.IsFalse (tv.GetControlStyle (ControlStyles.OptimizedDoubleBuffer), "#A4");
+			Assert.IsFalse (tv.GetControlStyle (ControlStyles.UserPaint), "#A5");
+
+			tv.IsDoubleBuffered = true;
+			Assert.IsTrue (tv.IsDoubleBuffered, "#B1");
+			Assert.IsTrue (tv.GetControlStyle (ControlStyles.AllPaintingInWmPaint), "#B2");
+			Assert.IsFalse (tv.GetControlStyle (ControlStyles.DoubleBuffer), "#B3");
+			Assert.IsTrue (tv.GetControlStyle (ControlStyles.OptimizedDoubleBuffer), "#B4");
+			Assert.IsFalse (tv.GetControlStyle (ControlStyles.UserPaint), "#B5");
+		}
+#endif
+
 		[Test]
 		public void SimpleShowTest ()
 		{
@@ -208,6 +228,22 @@ namespace MonoTests.System.Windows.Forms
 
 			form.Dispose ();
 		}
+
+		class MockTreeView : TreeView
+		{
+			public bool GetControlStyle (ControlStyles style)
+			{
+				return base.GetStyle (style);
+			}
+
+#if NET_2_0
+			public bool IsDoubleBuffered {
+				get { return DoubleBuffered; }
+				set { DoubleBuffered = value; }
+			}
+#endif
+		}
+
 	}
 
 	[TestFixture]