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

Reply via email to