in Tools/UIRecorder/UIRecorder/UiTreeNode.cs [109:159]
public static void AddToUiTree(RecordedUiTask recordedUi)
{
if (recordedUi.GetUiTreeNode() == null)
{
if (string.IsNullOrEmpty(recordedUi.GetXPath(false)))
{
return;
}
}
var uiNode = recordedUi.GetUiTreeNode();
if (uiNode == null || uiNode.Items.Count == 0)
{
//Log error
return;
}
// Empty root
if (s_uiTreeNodes.Count == 0)
{
s_uiTreeNodes.Add(uiNode);
return;
}
// Add uiNode to s_uiNode
UiTreeNode node = uiNode;
UiTreeNode nodeCached = null;
List<UiTreeNode> listCached = s_uiTreeNodes;
while (node != null)
{
var nodeAddTo = FindInCachedUiTree(node, listCached);
if (node.Items.Count > 0 && nodeAddTo != null)
{
node = node.Items.First();
listCached = nodeAddTo.Items;
nodeCached = nodeAddTo;
}
else
{
if (nodeCached != null)
{
node.Parent = nodeCached;
nodeCached.Items.Add(node);
}
break;
}
}
}