For the moment I have commented out the ClosePopup() call which means the user has to click away from the popup to close it, but it allows them to select nodes successfully.
When I call the ClosePopup() event after selecting a node, the new node is chosen, then the old selection is rechosen.
There's no reason why calling ClosePop should change the selected or active node on the WinTree it contains. I can't see how this is even possible. The PopupControlContainerTool cannot interact in any way with the properties of the contained control, it's completely opaque to it.
I would put a breakpoint in the AfterSelect event and look at the call stack to see what series of events of is causing the selected node to change. My guess is that hiding the popup is triggering something in your code - some other event - in which you are resetting the selected node on the tree.