Merge pull request #4540 from kumpera/android-changes-part1
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / MenuItemCollection.cs
index 85fd3c882b9a52e2e6bb103c5f42b418d25a8992..af6b7f6d0a5729dd42418c581541d4ab416ff740 100644 (file)
@@ -28,7 +28,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 
 using System;
 using System.Web.UI;
@@ -66,8 +65,8 @@ namespace System.Web.UI.WebControls
                                item.Menu = menu;
                }
                
-               public MenuItem this [int i] {
-                       get { return (MenuItem) items [i]; }
+               public MenuItem this [int index] {
+                       get { return (MenuItem) items [index]; }
                }
                
                public void Add (MenuItem child)
@@ -77,8 +76,7 @@ namespace System.Web.UI.WebControls
                        child.SetParent (parent);
                        if (marked) {
                                ((IStateManager)child).TrackViewState ();
-                               child.SetDirty ();
-                               dirty = true;
+                               SetDirty ();
                        }
                }
 
@@ -98,8 +96,7 @@ namespace System.Web.UI.WebControls
                                ((MenuItem)items[n]).Index = n;
                        if (marked) {
                                ((IStateManager)child).TrackViewState ();
-                               child.SetDirty ();
-                               dirty = true;
+                               SetDirty ();
                        }
                }
                
@@ -112,22 +109,24 @@ namespace System.Web.UI.WebControls
                                }
                        }
                        items.Clear ();
-                       dirty = true;
+                       if (marked) {
+                               SetDirty ();
+                       }
                }
                
-               public bool Contains (MenuItem child)
+               public bool Contains (MenuItem c)
                {
-                       return items.Contains (child);
+                       return items.Contains (c);
                }
                
-               public void CopyTo (Array itemArray, int index)
+               public void CopyTo (Array array, int index)
                {
-                       items.CopyTo (itemArray, index);
+                       items.CopyTo (array, index);
                }
                
-               public void CopyTo (MenuItem[] itemArray, int index)
+               public void CopyTo (MenuItem[] array, int index)
                {
-                       items.CopyTo (itemArray, index);
+                       items.CopyTo (array, index);
                }
                
                public IEnumerator GetEnumerator ()
@@ -135,19 +134,21 @@ namespace System.Web.UI.WebControls
                        return items.GetEnumerator ();
                }
                
-               public int IndexOf (MenuItem item)
+               public int IndexOf (MenuItem value)
                {
-                       return items.IndexOf (item);
+                       return items.IndexOf (value);
                }
                
-               public void Remove (MenuItem item)
+               public void Remove (MenuItem value)
                {
-                       int i = IndexOf (item);
+                       int i = IndexOf (value);
                        if (i == -1) return;
                        items.RemoveAt (i);
                        if (menu != null)
-                               item.Menu = null;
-                       dirty = true;
+                               value.Menu = null;
+                       if (marked) {
+                               SetDirty ();
+                       }
                }
                
                public void RemoveAt (int index)
@@ -156,7 +157,9 @@ namespace System.Web.UI.WebControls
                        items.RemoveAt (index);
                        if (menu != null)
                                item.Menu = null;
-                       dirty = true;
+                       if (marked) {
+                               SetDirty ();
+                       }
                }
                
                public int Count {
@@ -194,6 +197,14 @@ namespace System.Web.UI.WebControls
                                                ((IStateManager) item).LoadViewState (ns);
                                }
                        }
+                       else {
+                               for (int n = 1; n < its.Length; n++) {
+                                       Pair pair = (Pair) its [n];
+                                       int oi = (int) pair.First;
+                                       MenuItem node = (MenuItem) items [oi];
+                                       ((IStateManager) node).LoadViewState (pair.Second);
+                               }
+                       }
                }
                
                object IStateManager.SaveViewState ()
@@ -202,13 +213,13 @@ namespace System.Web.UI.WebControls
                        bool hasData = false;
                        
                        if (dirty) {
-                               state = new object [items.Count + 1];
-                               state [0] = true;
-                               for (int n=0; n<items.Count; n++) {
-                                       MenuItem item = items[n] as MenuItem;
-                                       object ns = ((IStateManager)item).SaveViewState ();
-                                       if (ns != null) {
-                                               hasData = true;
+                               if (items.Count > 0) {
+                                       hasData = true;
+                                       state = new object [items.Count + 1];
+                                       state [0] = true;
+                                       for (int n = 0; n < items.Count; n++) {
+                                               MenuItem item = items [n] as MenuItem;
+                                               object ns = ((IStateManager) item).SaveViewState ();
                                                state [n + 1] = ns;
                                        }
                                }
@@ -247,4 +258,3 @@ namespace System.Web.UI.WebControls
        }
 }
 
-#endif