Author: rolf
Date: 2007-08-21 10:26:03 -0400 (Tue, 21 Aug 2007)
New Revision: 84553
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
Log:
* Test/System.Windows.Forms/DataObjectTest.cs: Added TestConvertible.
* System.Windows.Forms/DataObject.cs: Implemented retrieval of
convertible / not convertible objects.
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-08-21 14:18:46 UTC (rev 84552)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-08-21 14:26:03 UTC (rev 84553)
@@ -1,3 +1,8 @@
+2007-08-21 Rolf Bjarne Kvinge <[EMAIL PROTECTED]>
+
+ * DataObject.cs: Implemented retrieval of convertible / not convertible
+ objects.
+
2007-08-21 Jonathan Pobst <[EMAIL PROTECTED]>
* ToolStripItem.cs: When changing the item's text, invalidate before we
resize
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
2007-08-21 14:18:46 UTC (rev 84552)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataObject.cs
2007-08-21 14:26:03 UTC (rev 84553)
@@ -42,7 +42,7 @@
#region Local Variables
private string type;
private object data;
- //private bool autoconvert;
+ private bool autoconvert;
internal Entry next;
#endregion // Local Variables
@@ -50,7 +50,7 @@
internal Entry(string type, object data, bool
autoconvert) {
this.type = type;
this.data = data;
- //this.autoconvert = autoconvert;
+ this.autoconvert = autoconvert;
}
#endregion // Constructors
@@ -64,6 +64,14 @@
data = value;
}
}
+ public bool AutoConvert {
+ get {
+ return autoconvert;
+ }
+ set {
+ autoconvert = value;
+ }
+ }
#endregion // Properties
#region Methods
@@ -80,9 +88,16 @@
return result;
}
- public static Entry Find(Entry entries, string type) {
+ public static Entry Find (Entry entries, string type) {
+ return Find (entries, type, false);
+ }
+
+ public static Entry Find(Entry entries, string type,
bool only_convertible) {
while (entries != null) {
- if (entries.type.Equals(type)) {
+ bool available = true;
+ if (only_convertible &&
!entries.autoconvert)
+ available = false;
+ if (available &&
entries.type.Equals(type)) {
return entries;
}
entries = entries.next;
@@ -131,24 +146,26 @@
list = new ArrayList(Entry.Count(entries));
e = entries;
- while (e != null) {
- list.Add(e.type);
- e = e.next;
- }
-
if (convertible) {
// Add the convertibles
- if ((Entry.Find(entries,
DataFormats.Text) != null) && (Entry.Find(entries, DataFormats.UnicodeText) ==
null)) {
-
list.Add(DataFormats.UnicodeText);
- }
+ Entry text_entry = Entry.Find (entries,
DataFormats.Text);
+ Entry utext_entry = Entry.Find
(entries, DataFormats.UnicodeText);
+ Entry string_entry = Entry.Find
(entries, DataFormats.StringFormat);
+ bool text_convertible = text_entry !=
null && text_entry.AutoConvert;
+ bool utext_convertible = utext_entry !=
null && utext_entry.AutoConvert;
+ bool string_convertible = string_entry
!= null && string_entry.AutoConvert;
- if ((Entry.Find(entries,
DataFormats.Text) == null) && (Entry.Find(entries, DataFormats.UnicodeText) !=
null)) {
- list.Add(DataFormats.Text);
+ if (text_convertible ||
utext_convertible || string_convertible) {
+ list.Add
(DataFormats.StringFormat);
+ list.Add
(DataFormats.UnicodeText);
+ list.Add (DataFormats.Text);
}
+ }
- if (((Entry.Find(entries,
DataFormats.Text) != null) || (Entry.Find(entries, DataFormats.UnicodeText) !=
null)) && (Entry.Find(entries, DataFormats.StringFormat) == null)) {
-
list.Add(DataFormats.StringFormat);
- }
+ while (e != null) {
+ if (!list.Contains (e.type))
+ list.Add (e.type);
+ e = e.next;
}
// Copy the results into a string array
Modified:
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
2007-08-21 14:18:46 UTC (rev 84552)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
2007-08-21 14:26:03 UTC (rev 84553)
@@ -1,3 +1,7 @@
+2007-08-21 Rolf Bjarne Kvinge <[EMAIL PROTECTED]>
+
+ * DataObjectTest.cs: Added TestConvertible.
+
2007-08-20 Carlos Alberto Cortez <[EMAIL PROTECTED]>
* ListViewGroupCollectionTest.cs: New tests for the indexers.
Modified:
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
2007-08-21 14:18:46 UTC (rev 84552)
+++
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/DataObjectTest.cs
2007-08-21 14:26:03 UTC (rev 84553)
@@ -35,6 +35,53 @@
public class DataObjectTest
{
[Test]
+ public void TestConvertible ()
+ {
+ DataObject o = new DataObject ();
+ o.SetData (DataFormats.Text, false, "abc");
+
+ Assert.AreEqual (new string [] { DataFormats.Text },
o.GetFormats (), "#01");
+ Assert.AreEqual (new string [] { DataFormats.Text },
o.GetFormats (true), "#02");
+ Assert.AreEqual (new string [] { DataFormats.Text },
o.GetFormats (false), "#03");
+
+ o = new DataObject ();
+ o.SetData (DataFormats.Text, true, "abc");
+
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#B1");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#B2");
+ Assert.AreEqual (new string [] { DataFormats.Text },
o.GetFormats (false), "#B3");
+
+
+ o = new DataObject ();
+ o.SetData (DataFormats.UnicodeText, true, "abc");
+
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#C1");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#C2");
+ Assert.AreEqual (new string [] {
DataFormats.UnicodeText }, o.GetFormats (false), "#C3");
+
+ o = new DataObject ();
+ o.SetData (DataFormats.UnicodeText, false, "abc");
+
+ Assert.AreEqual (new string [] {
DataFormats.UnicodeText }, o.GetFormats (), "#D1");
+ Assert.AreEqual (new string [] {
DataFormats.UnicodeText}, o.GetFormats (), "#D2");
+ Assert.AreEqual (new string [] {
DataFormats.UnicodeText }, o.GetFormats (false), "#D3");
+
+ o = new DataObject ();
+ o.SetData (DataFormats.StringFormat, true, "abc");
+
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#C1");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat, DataFormats.UnicodeText, DataFormats.Text },
o.GetFormats (), "#C2");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat }, o.GetFormats (false), "#C3");
+
+ o = new DataObject ();
+ o.SetData (DataFormats.StringFormat, false, "abc");
+
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat }, o.GetFormats (), "#D1");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat }, o.GetFormats (), "#D2");
+ Assert.AreEqual (new string [] {
DataFormats.StringFormat }, o.GetFormats (false), "#D3");
+ }
+
+ [Test]
public void TestAudio ()
{
DataObject d = new DataObject ();
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches