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 2022/10/16 11:07:58 UTC
[royale-asjs] branch develop updated: Emulation - make sure drop mouse events are dispatched from list based components
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 43956a7f71 Emulation - make sure drop mouse events are dispatched from list based components
43956a7f71 is described below
commit 43956a7f71d450a9fb4f6a45bc66d49e829abcac
Author: Yishay Weiss <yi...@hotmail.com>
AuthorDate: Sun Oct 16 14:07:44 2022 +0300
Emulation - make sure drop mouse events are dispatched from list based components
---
.../beads/SingleSelectionDropTargetBead.as | 4 ++--
.../beads/TreeSingleSelectionDropTargetBead.as | 4 ++--
.../royale/mx/controls/listClasses/ListBase.as | 22 +++++++++++++++++++++-
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/SingleSelectionDropTargetBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/SingleSelectionDropTargetBead.as
index 3360e98fe9..30e94a218b 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/SingleSelectionDropTargetBead.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/SingleSelectionDropTargetBead.as
@@ -24,6 +24,7 @@ package mx.controls.beads
import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.IChild;
import org.apache.royale.core.IDataProviderModel;
+ import org.apache.royale.utils.getOrAddBeadByType;
import org.apache.royale.core.IItemRenderer;
import org.apache.royale.core.ItemRendererOwnerViewBead;
import org.apache.royale.core.IParent;
@@ -153,8 +154,7 @@ package mx.controls.beads
{
_strand = value;
- _dropController = new DropMouseController();
- _strand.addBead(_dropController);
+ _dropController = getOrAddBeadByType(DropMouseController, value) as DropMouseController;
_dropController.addEventListener(DragEvent.DRAG_ENTER, handleDragEnter);
_dropController.addEventListener(DragEvent.DRAG_EXIT, handleDragExit);
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeSingleSelectionDropTargetBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeSingleSelectionDropTargetBead.as
index aac294ce0b..b089f7eef9 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeSingleSelectionDropTargetBead.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeSingleSelectionDropTargetBead.as
@@ -20,6 +20,7 @@ package mx.controls.beads
{
import mx.collections.IList;
+ import org.apache.royale.utils.getOrAddBeadByType;
import org.apache.royale.core.DropType;
import org.apache.royale.core.IBead;
import org.apache.royale.core.IDataProviderModel;
@@ -148,8 +149,7 @@ package mx.controls.beads
{
_strand = value;
- _dropController = new DropMouseController();
- _strand.addBead(_dropController);
+ _dropController = getOrAddBeadByType(DropMouseController, value) as DropMouseController;
_dropController.addEventListener(DragEvent.DRAG_ENTER, handleDragEnter);
_dropController.addEventListener(DragEvent.DRAG_EXIT, handleDragExit);
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
index 312e17e336..f94d2a4c42 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
@@ -19,6 +19,7 @@
package mx.controls.listClasses
{
+import org.apache.royale.utils.getOrAddBeadByType;
import mx.collections.ArrayCollection;
import mx.collections.ICollectionView;
import mx.collections.IList;
@@ -60,6 +61,11 @@ import org.apache.royale.utils.loadBeadFromValuesManager;
import mx.controls.dataGridClasses.DataGridListData;
import mx.events.FlexEvent;
import org.apache.royale.core.IHasLabelField;
+import org.apache.royale.html.beads.controllers.DropMouseController;
+import org.apache.royale.events.IEventDispatcher;
+import org.apache.royale.utils.sendStrandEvent;
+import mx.core.DragSource;
+import org.apache.royale.events.DragEvent;
use namespace mx_internal;
@@ -955,9 +961,23 @@ use namespace mx_internal;
// were made; these are just defaults extracted from CSS.
loadBeadFromValuesManager(IDataProviderItemRendererMapper, "iDataProviderItemRendererMapper", this);
loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", this);
+ // Make sure list based components dispatch drop events to potential listeners
+ var dropMouseController:IEventDispatcher = getOrAddBeadByType(DropMouseController, this) as IEventDispatcher;
+ dropMouseController.addEventListener(org.apache.royale.events.DragEvent.DRAG_ENTER, handleDropControllerEvent);
+ dropMouseController.addEventListener(org.apache.royale.events.DragEvent.DRAG_EXIT, handleDropControllerEvent);
+ dropMouseController.addEventListener(org.apache.royale.events.DragEvent.DRAG_OVER, handleDropControllerEvent);
+ dropMouseController.addEventListener(org.apache.royale.events.DragEvent.DRAG_DROP, handleDropControllerEvent);
dispatchEvent(new Event("initComplete"));
}
+
+
+ private function handleDropControllerEvent(event:org.apache.royale.events.DragEvent):void
+ {
+ var dragInitiator:IUIComponent; // TODO...
+ var dragEvent:mx.events.DragEvent = new mx.events.DragEvent(event.type, false, true, dragInitiator, org.apache.royale.events.DragEvent.dragSource as DragSource);
+ dispatchEvent(dragEvent);
+ }
/*
* IItemRendererProvider
@@ -1167,7 +1187,7 @@ use namespace mx_internal;
* @playerversion AIR 1.1
* @productversion Flex 3
*/
- public function hideDropFeedback(event:DragEvent):void
+ public function hideDropFeedback(event:mx.events.DragEvent):void
{
//To Do
trace("hideDropFeedback is not implemented");