Index: Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs
===================================================================
diff -u -r2fbd76129bb2bbc07cd625614b38012fbbf88cc4 -re868bbacfc273f272c5e85573bbdf7c125ae27ae
--- Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs (.../TreeNode.cs) (revision 2fbd76129bb2bbc07cd625614b38012fbbf88cc4)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeNode.cs (.../TreeNode.cs) (revision e868bbacfc273f272c5e85573bbdf7c125ae27ae)
@@ -11,7 +11,6 @@
{
private readonly TreeNodeList nodes;
private readonly TreeView treeView;
- private bool isLoaded;
private object tag;
private IObservable observable;
private readonly int maximumTextLength = 259; // Having very big strings causes problems by tree-view
@@ -157,23 +156,10 @@
{
get
{
- if (!isLoaded)
- {
- RefreshChildNodes();
- }
-
return nodes;
}
}
- public bool IsLoaded
- {
- get
- {
- return isLoaded;
- }
- }
-
public bool ShowCheckBox { get; set; }
public Color ForegroundColor
@@ -192,19 +178,6 @@
public bool IsUpdating { get; private set; }
- private void RefreshChildNodes(bool forcedRefresh = false)
- {
- if (IsUpdating && !forcedRefresh)
- {
- return; //prevent 're-entrancy' issues
- }
-
- IsUpdating = true;
- TreeView.RefreshChildNodes(this);
- isLoaded = true;
- IsUpdating = false;
- }
-
///
/// Check if the node is a descendent of another node
///
@@ -238,16 +211,6 @@
IsUpdating = false;
}
- public new void Expand()
- {
- if (!isLoaded)
- {
- TreeView.RefreshChildNodes(this);
- }
-
- base.Expand();
- }
-
public TreeNode GetParentOfLevel(int level)
{
TreeNode node = this;
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs
===================================================================
diff -u -r2fbd76129bb2bbc07cd625614b38012fbbf88cc4 -re868bbacfc273f272c5e85573bbdf7c125ae27ae
--- Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision 2fbd76129bb2bbc07cd625614b38012fbbf88cc4)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision e868bbacfc273f272c5e85573bbdf7c125ae27ae)
@@ -297,9 +297,6 @@
{
var selectedNodePath = SelectedNode == null ? string.Empty : SelectedNode.FullPath;
- // sometimes collection results in full refresh, as a result root node does not get expanded
- bool rootNodeIsLoaded = Nodes[0].IsLoaded;
-
//don't use allNodes since update of childnodes is done by parent.
foreach (TreeNode node in Nodes)
{
@@ -318,7 +315,7 @@
}
// expand root node if children were added
- if (!rootNodeIsLoaded && Nodes.Count > 0 && Nodes[0].Nodes.Count > 0)
+ if (Nodes.Count > 0 && Nodes[0].Nodes.Count > 0)
{
Nodes[0].Expand();
}
@@ -338,9 +335,7 @@
currentNode
};
- return (currentNode.IsLoaded)
- ? allChildNodes.Concat(currentNode.Nodes.SelectMany(GetAllLoadedNodes))
- : allChildNodes;
+ return allChildNodes.Concat(currentNode.Nodes.SelectMany(GetAllLoadedNodes));
}
protected override void OnPaint(PaintEventArgs e)
@@ -647,7 +642,7 @@
private TreeNode GetLastNode(TreeNode treeNode)
{
- if (treeNode.IsLoaded && treeNode.Nodes.Count > 0)
+ if (treeNode.Nodes.Count > 0)
{
return GetLastNode(treeNode.Nodes.Last());
}
@@ -729,9 +724,7 @@
return rootNode;
}
- return rootNode.IsLoaded || !skipUnLoadedNodes
- ? rootNode.Nodes.Select(n => GetNodeByTag(n, tag, skipUnLoadedNodes)).FirstOrDefault(node => node != null)
- : null;
+ return rootNode.Nodes.Select(n => GetNodeByTag(n, tag, skipUnLoadedNodes)).FirstOrDefault(node => node != null);
}
///
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs
===================================================================
diff -u -r5fa6d278e3763a01d20799215bec6f6e398ee417 -re868bbacfc273f272c5e85573bbdf7c125ae27ae
--- Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs (.../TreeViewController.cs) (revision 5fa6d278e3763a01d20799215bec6f6e398ee417)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewController.cs (.../TreeViewController.cs) (revision e868bbacfc273f272c5e85573bbdf7c125ae27ae)
@@ -172,7 +172,6 @@
return;
}
- bool wasLoaded = treeNode.IsLoaded;
if (!ReferenceEquals(treeNode.Tag, tag))
{
treeNode.Tag = tag;
@@ -187,11 +186,6 @@
treeNode.HasChildren = count > 0;
- if (!treeNode.IsLoaded && !wasLoaded)
- {
- return;
- }
-
if (treeNode.Nodes.Count != count)
{
RefreshChildNodes(treeNode);
@@ -252,26 +246,21 @@
{
var newNode = treeView.NewNode();
- newNode.Tag = nodeData;
-
if (treeView.CheckBoxes)
{
newNode.Checked = parentNode.Checked;
}
UpdateNode(parentNode, newNode, nodeData);
- //if (newNode.IsVisible)
+ if (insertionIndex != -1)
{
- if (insertionIndex != -1)
- {
- parentNode.Nodes.Insert(insertionIndex, newNode);
- }
- else
- {
- parentNode.Nodes.Add(newNode);
- }
+ parentNode.Nodes.Insert(insertionIndex, newNode);
}
+ else
+ {
+ parentNode.Nodes.Add(newNode);
+ }
newNode.HasChildren = HasChildren(newNode);
}
@@ -316,11 +305,6 @@
private IEnumerable GetAllLoadedChildNodes(TreeNode node, string[] forceNodeLoad = null)
{
- if (!node.IsLoaded && (forceNodeLoad == null || !forceNodeLoad.Contains(node.FullPath)))
- {
- yield break;
- }
-
foreach (var childNode in node.Nodes)
{
yield return childNode;
@@ -394,10 +378,10 @@
Tag = data
};
- treeView.Nodes.Add(rootNode);
-
UpdateNode(null, rootNode, data);
+ treeView.Nodes.Add(rootNode);
+
if (HasChildren(rootNode))
{
rootNode.HasChildren = true;
@@ -443,6 +427,7 @@
node.Tag = nodeData;
presenter.UpdateNode(parentNode, node, nodeData);
+ RefreshChildNodes(node);
}
///
Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs
===================================================================
diff -u -r5fa6d278e3763a01d20799215bec6f6e398ee417 -re868bbacfc273f272c5e85573bbdf7c125ae27ae
--- Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision 5fa6d278e3763a01d20799215bec6f6e398ee417)
+++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewNodePresenterBase.cs (.../TreeViewNodePresenterBase.cs) (revision e868bbacfc273f272c5e85573bbdf7c125ae27ae)
@@ -79,11 +79,6 @@
public virtual void OnNodeChecked(TreeNode node)
{
- if (!node.IsLoaded)
- {
- return;
- }
-
foreach (var childNode in node.Nodes)
{
childNode.Checked = node.Checked;
Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControllerTest.cs
===================================================================
diff -u -r2f45fd13d134ed6bdfcdb0967d07516beb30409c -re868bbacfc273f272c5e85573bbdf7c125ae27ae
--- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControllerTest.cs (.../TreeViewControllerTest.cs) (revision 2f45fd13d134ed6bdfcdb0967d07516beb30409c)
+++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControllerTest.cs (.../TreeViewControllerTest.cs) (revision e868bbacfc273f272c5e85573bbdf7c125ae27ae)
@@ -166,7 +166,7 @@
LastCall.On(treeview).IgnoreArguments();
Expect.Call(nodePresenter.NodeTagType).Return(typeof(object)).Repeat.Any();
- Expect.Call(nodePresenter.GetChildNodeObjects(null)).IgnoreArguments().Return(Enumerable.Empty