This is an automated email from the ASF dual-hosted git repository. yishayw pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push: new 07f3fbe Fix previous items jumping down before item is dropped new a836d18 Merge branch 'develop' of https://github.com/apache/royale-asjs into develop 07f3fbe is described below commit 07f3fbeaab1696c112df1b35ae61e222620fc254 Author: DESKTOP-RH4S838\Yishay <yishayj...@hotmail.com> AuthorDate: Tue Dec 18 11:15:03 2018 +0200 Fix previous items jumping down before item is dropped --- .../SensitiveSingleSelectionDropTargetBead.as | 24 ++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SensitiveSingleSelectionDropTargetBead.as b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SensitiveSingleSelectionDropTargetBead.as index 6a9a41b..cde53c2 100644 --- a/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SensitiveSingleSelectionDropTargetBead.as +++ b/frameworks/projects/DragDrop/src/main/royale/org/apache/royale/html/beads/SensitiveSingleSelectionDropTargetBead.as @@ -321,24 +321,36 @@ package org.apache.royale.html.beads return; } + + var dragSource:Object = DragEvent.dragSource; + var calculatedTargetIndex:int = targetIndex; + if (itemRendererParent.numItemRenderers != calculatedTargetIndex + 1) + { + // dragging somewhere higher on the list, fix items jumping down before it's dropped + for (var i:int = 0; i < calculatedTargetIndex; i++) + { + if (itemRendererParent.getItemRendererAt(i).data == dragSource) + { + calculatedTargetIndex--; + break; + } + } + } if (DragEvent.dragInitiator) { DragEvent.dragInitiator.acceptingDrop(_strand, "object"); } - var dragSource:Object = DragEvent.dragSource; - var sourceIndex:int = 0; - var dataProviderModel:IDataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel; if (dataProviderModel.dataProvider is Array) { var dataArray:Array = dataProviderModel.dataProvider as Array; - dataArray.splice(targetIndex, 0, dragSource); + dataArray.splice(calculatedTargetIndex, 0, dragSource); var newArray:Array = dataArray.slice() dataProviderModel.dataProvider = newArray; } else if (dataProviderModel.dataProvider is ArrayList) { var dataList:ArrayList = dataProviderModel.dataProvider as ArrayList; - dataList.addItemAt(dragSource, targetIndex); + dataList.addItemAt(dragSource, calculatedTargetIndex); } // Let the dragInitiator know the drop has been completed. @@ -347,7 +359,7 @@ package org.apache.royale.html.beads } if (dataProviderModel is ISelectionModel) { - (dataProviderModel as ISelectionModel).selectedIndex = targetIndex; + (dataProviderModel as ISelectionModel).selectedIndex = calculatedTargetIndex; } // is this event necessary? isn't "complete" enough?