Don't recursively call _update_tree
When a node was previously selected and the test "selected == p_node"
was true the code would use set_selected() to change the selection to
nullptr. However, if the tree is dirty, which is always true in this
codepath, this would lead to a recursive call to _update_tree()
ultimately leading to a crash due to us running out of stack.
This fixes #100666