Author: jackson
Date: 2007-03-12 02:37:49 -0500 (Mon, 12 Mar 2007)
New Revision: 74099

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/OpenTreeNodeEnumerator.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
Log:

        * TreeView.cs:
        * TreeNode.cs:
        * OpenTreeNodeEnumerator: Match MS better for IsVisible and
        IsExpanded.



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-03-12 07:30:47 UTC (rev 74098)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-03-12 07:37:49 UTC (rev 74099)
@@ -1,5 +1,12 @@
 2007-03-12  Jackson Harper  <[EMAIL PROTECTED]>
 
+       * TreeView.cs:
+       * TreeNode.cs:
+       * OpenTreeNodeEnumerator: Match MS better for IsVisible and
+       IsExpanded.
+
+2007-03-12  Jackson Harper  <[EMAIL PROTECTED]>
+
        * TextBoxBase.cs: Now that the handles are being created a little
        later, we need to make sure that the document is recalculated when
        the handle is created.

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/OpenTreeNodeEnumerator.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/OpenTreeNodeEnumerator.cs
        2007-03-12 07:30:47 UTC (rev 74098)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/OpenTreeNodeEnumerator.cs
        2007-03-12 07:37:49 UTC (rev 74099)
@@ -55,7 +55,7 @@
                                return (current != null);
                        }
 
-                       if (current.IsExpanded && current.Nodes.Count > 0) {
+                       if (current.is_expanded && current.Nodes.Count > 0) {
                                current = current.Nodes [0];
                                return true;
                        }
@@ -88,7 +88,7 @@
                                TreeNode walk = prev;
                                while (walk != null) {
                                        prev = walk;
-                                       if (!walk.IsExpanded)
+                                       if (!walk.is_expanded)
                                                break;
                                        walk = walk.LastNode;
                                }

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs      
2007-03-12 07:30:47 UTC (rev 74098)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs      
2007-03-12 07:37:49 UTC (rev 74099)
@@ -45,7 +45,7 @@
         internal TreeNodeCollection nodes;
                internal TreeViewAction check_reason = TreeViewAction.Unknown;
 
-               internal int visible_order;
+               internal int visible_order = -1;
                internal int width = -1;
                
                internal bool is_expanded = false;
@@ -342,7 +342,23 @@
                }
 
                public bool IsExpanded {
-                       get { return is_expanded; }
+                       get {
+                               TreeView tv = TreeView;
+
+                               if (tv != null && tv.IsHandleCreated) {
+                                       // This is ridiculous
+                                       bool found = false;
+                                       foreach (TreeNode walk in 
TreeView.Nodes) {
+                                               if (walk.Nodes.Count > 0)
+                                                       found = true;
+                                       }
+
+                                       if (!found)
+                                               return false;
+                               }
+                                       
+                               return is_expanded;
+                       }
                }
 
                public bool IsSelected {
@@ -355,16 +371,16 @@
 
                public bool IsVisible {
                        get {
-                               if (TreeView == null || visible_order < 0)
+                               if (TreeView == null || 
!TreeView.IsHandleCreated || !TreeView.Visible)
                                        return false;
 
-                               Rectangle bounds = Bounds;
-                               if (bounds.Y < 0 && bounds.Y > 
TreeView.ClientRectangle.Height)
+                               
+                               if (visible_order < TreeView.skipped_nodes || 
visible_order - TreeView.skipped_nodes > TreeView.VisibleCount)
                                        return false;
 
                                TreeNode parent = Parent;
                                while (parent != null) {
-                                       if (!parent.IsExpanded)
+                                       if (!parent.is_expanded)
                                                return false;
                                        parent = parent.Parent;
                                }

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2007-03-12 07:30:47 UTC (rev 74098)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2007-03-12 07:37:49 UTC (rev 74099)
@@ -604,13 +604,24 @@
 
                        EndUpdate ();
 
+                       if (IsHandleCreated) {
+                               bool found = false;
+                               foreach (TreeNode child in Nodes) {
+                                       if (child.Nodes.Count > 0)
+                                               found = true;
+                               }
+                       
+                               if (!found)
+                                       return;
+                       }
+
                        // Walk all the way to the end, then walk back visible 
count
                        //to find the new top node
                        OpenTreeNodeEnumerator walk = new 
OpenTreeNodeEnumerator (root_node);
                        while (walk.MoveNext ())
                        { }
 
-                       walk.CurrentNode.EnsureVisible ();
+                       SetTop (walk.CurrentNode);
                }
 
                
@@ -662,7 +673,7 @@
                #region Protected Instance Methods
                protected override void CreateHandle () {
                        base.CreateHandle ();
-
+                       RecalculateVisibleOrder (root_node);
                        UpdateScrollBars ();
                }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to