 			assert(@ not in new_father.getPath(true), "#{getObjectClass(@)}.setFather", "father cannot any of the node's children", node: @, father: new_father)
 
 		if not new_father and @selected
-			@getRoot()?.selectedNode = null
+			@setSelectedNode(null)
 			@selected = false
 
 		if @father and not new_father


		@check_deselect(ev, new_node)
		.done =>
			@getRoot().selectedNode = null
			t = @getTree()
			t.rowRemoveClass(@getRowIdx(), ListViewRow.defaults.selected_class)
			@selected = false
			@getTree().triggerNodeDeselect(ev, @)


		# CUI.debug "selecting node", sel_node

		do_select = =>
			@setSelectedNode(@)
			# CUI.error "openUpwards", @getNodeId(), @is_open
			@openUpwards()
			.done =>
				@addSelectedClass()
				@selected = true
				dfr.resolve()
			.fail(dfr.reject)

		# the selected node is not us, so we ask the other
		# node
		sel_node = @getSelectedNode()

		if sel_node
			sel_node.check_deselect(ev)
