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?