You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/04/08 12:49:45 UTC
[royale-asjs] branch develop updated:
DataItemRendererFactoryForCollectionView: fix selectedIndex when adding,
removing or update items at runtime
This is an automated email from the ASF dual-hosted git repository.
carlosrovira 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 7621791 DataItemRendererFactoryForCollectionView: fix selectedIndex when adding, removing or update items at runtime
7621791 is described below
commit 762179106893df044db43a2e6d72555ca57ee5b4
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Wed Apr 8 14:49:41 2020 +0200
DataItemRendererFactoryForCollectionView: fix selectedIndex when adding, removing or update items at runtime
---
.../DataItemRendererFactoryForCollectionView.as | 27 +++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
index 4adf50c..4bbdf07 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
@@ -22,6 +22,7 @@ package org.apache.royale.html.beads
import org.apache.royale.core.IIndexedItemRenderer;
import org.apache.royale.core.IIndexedItemRendererInitializer;
import org.apache.royale.core.IItemRendererOwnerView;
+ import org.apache.royale.core.ISelectionModel;
import org.apache.royale.core.IStrandWithModelView;
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
@@ -111,6 +112,13 @@ package org.apache.royale.html.beads
//var ubase:UIItemRendererBase = ir as UIItemRendererBase;
//if (ubase) ubase.updateRenderer()
}
+
+ //adjust the model's selectedIndex, if applicable
+ if (event.index <= ISelectionModel(dataProviderModel).selectedIndex) {
+ ISelectionModel(dataProviderModel).selectedIndex = ISelectionModel(dataProviderModel).selectedIndex + 1;
+ }
+
+
sendStrandEvent(_strand,"itemsCreated");
sendStrandEvent(_strand,"layoutNeeded");
}
@@ -149,6 +157,17 @@ package org.apache.royale.html.beads
//var ubase:UIItemRendererBase = ir as UIItemRendererBase;
//if (ubase) ubase.updateRenderer()
}
+
+ //adjust the model's selectedIndex, if applicable
+ if (event.index < ISelectionModel(dataProviderModel).selectedIndex)
+ {
+ ISelectionModel(dataProviderModel).selectedIndex = ISelectionModel(dataProviderModel).selectedIndex - 1;
+ }
+ else if (event.index == ISelectionModel(dataProviderModel).selectedIndex)
+ {
+ ISelectionModel(dataProviderModel).selectedIndex = -1;
+ }
+
sendStrandEvent(_strand,"layoutNeeded");
}
@@ -174,7 +193,13 @@ package org.apache.royale.html.beads
var data:Object = event.item;
(itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, event.index);
- ir.data = data;
+ ir.data = data;
+
+ if (event.index == ISelectionModel(dataProviderModel).selectedIndex) {
+ //manually trigger a selection change, even if there was actually none.
+ //This causes selection-based bindings to work
+ IEventDispatcher(dataProviderModel).dispatchEvent(new Event('selectedIndexChanged'));
+ }
}
override protected function get dataProviderLength():int