diff --git a/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs b/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs index 08bd55a74..13b1ee0ce 100644 --- a/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs +++ b/trunk/ProcessHacker/Components/ProcessTree/ProcessTree.cs @@ -232,6 +232,11 @@ namespace ProcessHacker return treeProcesses.FindNode(_treeModel.GetPath(_treeModel.Nodes[PID])); } + public TreeNodeAdv FindTreeNode(ProcessNode node) + { + return this.FindTreeNode(node.PID); + } + public ProcessNode FindNode(TreeNodeAdv node) { return treeProcesses.GetPath(node).LastNode as ProcessNode; diff --git a/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs b/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs index 74848ee42..dd1f26f13 100644 --- a/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs +++ b/trunk/ProcessHacker/Components/ProcessTree/ProcessTreeModel.cs @@ -77,6 +77,7 @@ namespace ProcessHacker { ProcessNode targetNode = _processes[item.PID]; ProcessNode[] nodes = _roots.ToArray(); + ProcessNode[] targetChildren = null; foreach (ProcessNode node in nodes) { @@ -93,6 +94,7 @@ namespace ProcessHacker if (foundNode != null) { foundNode.Children.Remove(targetNode); + targetChildren = targetNode.Children.ToArray(); this.MoveChildrenToRoot(targetNode); break; } @@ -102,6 +104,16 @@ namespace ProcessHacker _processes.Remove(item.PID); this.StructureChanged(this, new TreePathEventArgs(new TreePath())); + + foreach (ProcessNode n in targetChildren) + { + try + { + _tree.FindTreeNode(n).ExpandAll(); + } + catch + { } + } } public TreePath GetPath(ProcessNode node)