You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2020/08/10 04:59:38 UTC
[royale-asjs] 01/02: Make columns immutable for internal use.
getter/setter works on copies.
This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 67a54a324fb1697a6f41b12ac266bec2e7cec8b3
Author: greg-dove <gr...@gmail.com>
AuthorDate: Mon Aug 10 16:53:02 2020 +1200
Make columns immutable for internal use. getter/setter works on copies.
---
.../beads/models/DataGridCollectionViewModel.as | 26 +++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/DataGridCollectionViewModel.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/DataGridCollectionViewModel.as
index 29119c1..7e47d50 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/DataGridCollectionViewModel.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/DataGridCollectionViewModel.as
@@ -61,12 +61,32 @@ package org.apache.royale.html.beads.models
*/
public function get columns():Array
{
- return _columns;
+ return _columns ? _columns.slice() : []; //return a copy. Internal state is not externally mutable
}
public function set columns(value:Array):void
{
- if (_columns != value) {
- _columns = value;
+ var change:Boolean;
+ var oldCols:Array = _columns;
+ if (oldCols) {
+ var l:uint = oldCols.length;
+ if (value) {
+ change = value.length != l; //different columns lengths
+ if (!change) {
+ for (var i:uint = 0; i < l; i++) {
+ if (oldCols[i] != value[i]) {
+ change = true; //at least one non-matching column
+ break;
+ }
+ }
+ }
+ } else {
+ change = l > 0; //reset to empty
+ }
+ } else {
+ change = value && value.length; //set to something after previously empty
+ }
+ if (change) {
+ _columns = value ? value.slice() : [];
dispatchEvent( new Event("columnsChanged"));
}
}