diff --git a/primefaces/src/main/resources/META-INF/resources/primefaces/tree/tree.vertical.js b/primefaces/src/main/resources/META-INF/resources/primefaces/tree/tree.vertical.js index 4e26182f43..5facedf624 100644 --- a/primefaces/src/main/resources/META-INF/resources/primefaces/tree/tree.vertical.js +++ b/primefaces/src/main/resources/META-INF/resources/primefaces/tree/tree.vertical.js @@ -754,6 +754,15 @@ PrimeFaces.widget.VerticalTree = PrimeFaces.widget.BaseTree.extend({ draggedSourceKeys = draggedSourceKeys.filter(function(key) { return $.inArray(key, $this.invalidSourceKeys) === -1; }); + + // #11513 dndIndex is based on whether you are dragging up or down + var dndIndex = dropPoint.prevAll('li.ui-treenode').length; + if (parseInt(dragNodeKey) < dndIndex) { + var nextDndIndex = dropPoint.nextAll('li.ui-treenode').length; + if (nextDndIndex > 0) { + dndIndex = nextDndIndex; + } + } if (draggedSourceKeys && draggedSourceKeys.length) { draggedSourceKeys = draggedSourceKeys.reverse().join(','); @@ -761,7 +770,7 @@ PrimeFaces.widget.VerticalTree = PrimeFaces.widget.BaseTree.extend({ 'dragNodeKey': draggedSourceKeys, 'dropNodeKey': dropNodeKey, 'dragSource': dragSource.id, - 'dndIndex': dropPoint.prevAll('li.ui-treenode').length, + 'dndIndex': dndIndex, 'transfer': transfer, 'isDroppedNodeCopy': isDroppedNodeCopy });