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 <[email protected]> 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")); } }
