Though it is possible to drag-and-drop leaf node of a tree to another non-leaf node, drag-and-dropping leaf node to another leaf node makes the dragged one disappear after dropping it. The problem is that initially all the leaf nodes have TreeNode#isChildrenRendered property turned off (false). When the leaf is dropped to another leaf node this property does not changes. Thus the implementation of Tree.onAdd works incorrectly:

I'm not quite sure that the isChildrenRendered property is the only reason for this issue, as far as I tried to change it in debugger to true, but that did not produce any effect so far. The internal logic of the widget is a bit sophisticated to me from the first view, but I expect to have time to get into soon.

parentChildCount= 1 after dropping one leaf node on another but parent.getChildren() is still empty but should be instead contain node that passed in event.getItems(). Looks I have to look close to the TreeStore and how it use properly.