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