You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pi...@apache.org on 2021/03/09 16:44:22 UTC
[royale-asjs] branch develop updated: MXRoyale: Fix issue where
removing item from ArrayCollection wasn't reflected in UI of DataGrid
This is an automated email from the ASF dual-hosted git repository.
piotrz 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 41b43a3 MXRoyale: Fix issue where removing item from ArrayCollection wasn't reflected in UI of DataGrid
41b43a3 is described below
commit 41b43a3afe723f273926730c643f10086d663826
Author: Piotr Zarzycki <pi...@gmail.com>
AuthorDate: Tue Mar 9 17:44:10 2021 +0100
MXRoyale: Fix issue where removing item from ArrayCollection wasn't reflected in UI of DataGrid
---
...ataItemRendererFactoryForICollectionViewData.as | 50 +++++++++++++---------
1 file changed, 29 insertions(+), 21 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/DataItemRendererFactoryForICollectionViewData.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/DataItemRendererFactoryForICollectionViewData.as
index 7c66982..ee32f90 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/DataItemRendererFactoryForICollectionViewData.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/DataItemRendererFactoryForICollectionViewData.as
@@ -39,7 +39,6 @@ package mx.controls.listClasses
import org.apache.royale.core.SimpleCSSStyles;
import org.apache.royale.core.UIBase;
import org.apache.royale.core.ValuesManager;
- import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
import org.apache.royale.events.IEventDispatcher;
@@ -103,10 +102,10 @@ package mx.controls.listClasses
// listen for individual items being added in the future.
var dped:IEventDispatcher = dp as IEventDispatcher;
- dped.addEventListener(org.apache.royale.events.CollectionEvent.ITEM_ADDED, itemAddedHandler);
- dped.addEventListener(org.apache.royale.events.CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
- dped.addEventListener(org.apache.royale.events.CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
- dped.addEventListener(mx.events.CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
+ //First remove if it's already added
+ dped.removeEventListener(mx.events.CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
+
+ dped.addEventListener(mx.events.CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
super.dataProviderChangeHandler(event);
}
@@ -136,7 +135,7 @@ package mx.controls.listClasses
* @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
* @royaleignorecoercion org.apache.royale.events.IEventDispatcher
*/
- protected function itemAddedHandler(event:org.apache.royale.events.CollectionEvent):void
+ protected function itemAddedHandler(event:CollectionEvent):void
{
if (!dataProviderModel)
return;
@@ -148,15 +147,15 @@ package mx.controls.listClasses
var dataGroup:IItemRendererOwnerView = view.dataGroup;
var ir:IIndexedItemRenderer = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
- dataGroup.addItemRendererAt(ir, event.index);
+ dataGroup.addItemRendererAt(ir, event.location);
- var data:Object = event.item;
- (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, event.index);
+ var data:Object = event.items.pop();
+ (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, event.location);
ir.data = data;
// update the index values in the itemRenderers to correspond to their shifted positions.
var n:int = dataGroup.numItemRenderers;
- for (var i:int = event.index; i < n; i++)
+ for (var i:int = event.location; i < n; i++)
{
ir = dataGroup.getItemRendererAt(i) as IIndexedItemRenderer;
ir.index = i;
@@ -172,7 +171,7 @@ package mx.controls.listClasses
(_strand as IEventDispatcher).dispatchEvent(new Event("layoutNeeded"));
}
- protected function itemRemovedHandler(event:org.apache.royale.events.CollectionEvent):void
+ protected function itemRemovedHandler(event:CollectionEvent):void
{
if (!dataProviderModel)
return;
@@ -183,13 +182,13 @@ package mx.controls.listClasses
var view:IListView = (_strand as IStrandWithModelView).view as IListView;
var dataGroup:IItemRendererOwnerView = view.dataGroup;
- var ir:IIndexedItemRenderer = dataGroup.getItemRendererAt(event.index) as IIndexedItemRenderer;
+ var ir:IIndexedItemRenderer = dataGroup.getItemRendererAt(event.location) as IIndexedItemRenderer;
if (!ir) return; // may have already been cleaned up, possibly when a tree node closes
dataGroup.removeItemRenderer(ir);
// adjust the itemRenderers' index to adjust for the shift
var n:int = dataGroup.numItemRenderers;
- for (var i:int = event.index; i < n; i++)
+ for (var i:int = event.location; i < n; i++)
{
ir = dataGroup.getItemRendererAt(i) as IIndexedItemRenderer;
ir.index = i;
@@ -209,7 +208,7 @@ package mx.controls.listClasses
* @royaleignorecoercion org.apache.royale.collections.ICollectionView
* @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
*/
- protected function itemUpdatedHandler(event:org.apache.royale.events.CollectionEvent):void
+ protected function itemUpdatedHandler(event:CollectionEvent):void
{
if (!dataProviderModel)
return;
@@ -222,10 +221,10 @@ package mx.controls.listClasses
// update the given renderer with (possibly) new information so it can change its
// appearence or whatever.
- var ir:IIndexedItemRenderer = dataGroup.getItemRendererAt(event.index) as IIndexedItemRenderer;
+ var ir:IIndexedItemRenderer = dataGroup.getItemRendererAt(event.location) as IIndexedItemRenderer;
- var data:Object = event.item;
- (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, event.index);
+ var data:Object = event.items.pop();
+ (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, event.location);
ir.data = data;
}
@@ -236,7 +235,7 @@ package mx.controls.listClasses
* @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
* @royaleignorecoercion org.apache.royale.events.IEventDispatcher
*/
- protected function collectionChangeHandler(event:mx.events.CollectionEvent):void
+ protected function collectionChangeHandler(event:CollectionEvent):void
{
if (!dataProviderModel)
return;
@@ -248,9 +247,18 @@ package mx.controls.listClasses
{
super.dataProviderChangeHandler(event);
}
+ else if (event.kind == CollectionEventKind.REMOVE)
+ {
+ this.itemRemovedHandler(event);
+ }
+ else if (event.kind == CollectionEventKind.ADD)
+ {
+ this.itemAddedHandler(event);
+ }
+ else if (event.kind == CollectionEventKind.UPDATE)
+ {
+ this.itemUpdatedHandler(event);
+ }
}
-
-
-
}
}