FLEX-27509 CAUSE: In an AdvancedDataGrid with non-text item renderers AdvancedDataGrid.expandItem() applies masks onto those item renderers when it needs to close a node. At the same time, AdvancedListBase has its own custom mechanism for using masks to scroll vertically in a more efficient way. In order to detect whether it's used this mechanism, and reset the changes (detection happens in AdvancedListBase.removeClipMask(), while the mechanism is applied in addClipMask()), it simply asks whether the non-text item renderer has a mask applied. However, this mask could have been applied by the expandItem() mechanism mentioned above, which means that addClipMask() will never have been called. As a result, itemMaskFreeList is still null, which leads to the fatal.
SOLUTION: Ideally there should be a flag that specifies whether AdvancedListBase.addClipMask() has applied the masking mechanism. But for now we can simply check that itemMaskFreeList isn't null before we use it. Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/4102e70b Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/4102e70b Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/4102e70b Branch: refs/heads/develop Commit: 4102e70b6c9523b7b1f29d0b8c82602f421dc535 Parents: db8c1bf Author: Mihai Chira <[email protected]> Authored: Thu Jan 12 13:24:40 2017 +0100 Committer: Mihai Chira <[email protected]> Committed: Thu Jan 12 16:52:37 2017 +0100 ---------------------------------------------------------------------- .../src/mx/controls/listClasses/AdvancedListBase.as | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/4102e70b/frameworks/projects/advancedgrids/src/mx/controls/listClasses/AdvancedListBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/advancedgrids/src/mx/controls/listClasses/AdvancedListBase.as b/frameworks/projects/advancedgrids/src/mx/controls/listClasses/AdvancedListBase.as index 854f0df..a872381 100644 --- a/frameworks/projects/advancedgrids/src/mx/controls/listClasses/AdvancedListBase.as +++ b/frameworks/projects/advancedgrids/src/mx/controls/listClasses/AdvancedListBase.as @@ -5231,7 +5231,10 @@ public class AdvancedListBase extends ScrollControlBase } else if (item && item.mask) { - itemMaskFreeList.push(item.mask); + if(itemMaskFreeList) + { + itemMaskFreeList.push(item.mask); + } item.mask = null; } }
