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;
             }
         }

Reply via email to