+2007-09-20 Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+ * TreeNode.cs: Add an internal ArePreviousNodesExpanded, to know
+ whether all the parent nodes are expanded.
+ * TreeNodeCollection.cs: When adding a new node an calling SetupNode,
+ call RecalculateVisibleOrder if all previous nodes are expanded.
+ Before that we were doing a IsVisible check, but sometimes the node
+ is not in the visible area, but _should_already be ready, because of
+ all previous nodes are expanded. Fixes #325259.
+
2007-09-20 Jonathan Pobst <monkey@jpobst.com>
* ToolStripSplitButton.cs: Call the ButtonClick event if the button
if (visible_order <= TreeView.skipped_nodes || visible_order - TreeView.skipped_nodes > TreeView.VisibleCount)
return false;
- TreeNode parent = Parent;
- while (parent != null) {
- if (!parent.is_expanded)
- return false;
- parent = parent.Parent;
- }
- return true;
+ return ArePreviousNodesExpanded;
}
}
#region Internal & Private Methods and Properties
+ internal bool ArePreviousNodesExpanded {
+ get {
+ TreeNode parent = Parent;
+ while (parent != null) {
+ if (!parent.is_expanded)
+ return false;
+ parent = parent.Parent;
+ }
+
+ return true;
+ }
+ }
+
internal bool IsRoot {
get {
TreeView tree_view = TreeView;
if (tree_view != null) {
TreeNode prev = GetPrevNode (node);
- if (node.IsVisible)
+ if (tree_view.IsHandleCreated && node.ArePreviousNodesExpanded)
tree_view.RecalculateVisibleOrder (prev);
if (owner == tree_view.root_node || node.Parent.IsVisible && node.Parent.IsExpanded)
tree_view.UpdateScrollBars (false);