You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2018/12/18 09:15:52 UTC

[royale-asjs] branch develop updated: Fix previous items jumping down before item is dropped

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 <yi...@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?