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?

Reply via email to