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 <[email protected]>
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