Hi all, From looking inside of Tree.as class, I got the understanding that Tree's dataProvider is updated with a new position of draggedNode inside event handler for "dragComplete" event called 'dragCompleteHandler'.
Thus, I've subscribed to "dragComplete" event to work with the updated copy of Tree's dataProvider. Unfortunately, I had found out that I cannot get an access to 'draggedItems' Array based on data from DragEvent inside custom "dragComplete" event handler. My custom event handler function listing: --------------------------------------------------------- private function onDragComplete(event : DragEvent) : void { event.preventDefault(); var draggedItems : Array = (event.dragSource.dataForFormat("treeItems") as Array); for each (var draggedItem : XML in draggedItems) { var parentTarget : XML = tree.getParentItem(draggedItem); trace ("onDragComplete", draggedItems.length); } } --------------------------------------------------------- The trace command inside this function outputs that 'draggedItems' Array length is 0, when I successfully finish the drag operation within a Tree with dragged Item. When I subscribe to "dragDrop" event, I have an access to 'draggedItems' Array without the problems - you can check it by yourself by running the code below. Full MXML listing code follows: ----------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="onCreationComplete()"> <mx:Script> <![CDATA[ import mx.events.DragEvent; private static const itemsXML : XML = <root> <item label="item 1"> <a label="a1"> <x label="x1" /> <y label="y1" /> <z label="z1" /> </a> <b label="b1" /> <c label="c1" /> </item> </root>; private function onCreationComplete() : void { tree.dataProvider = itemsXML; } private function onDragDrop(event : DragEvent) : void { var draggedItems : Array = (event.dragSource.dataForFormat("treeItems") as Array); for each (var draggedItem : XML in draggedItems) { var parentTarget : XML = tree.getParentItem(draggedItem); trace ("onDragDrop", draggedItems.length); } } private function onDragComplete(event : DragEvent) : void { event.preventDefault(); var draggedItems : Array = (event.dragSource.dataForFormat("treeItems") as Array); for each (var draggedItem : XML in draggedItems) { var parentTarget : XML = tree.getParentItem(draggedItem); trace ("onDragComplete", draggedItems.length); } } ]]> </mx:Script> <mx:Tree id="tree" width="500" height="500" labelField="@label" dragEnabled="true" dropEnabled="true" showRoot="false" dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)"/> </mx:Application> ----------------------------------------------------------------------- -- Med venlig hilsen / Best regards Andriy Panas [EMAIL PROTECTED]