[
https://issues.apache.org/jira/browse/FLEX-35321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16040726#comment-16040726
]
Mihai Chira commented on FLEX-35321:
------------------------------------
Thank you for your thoughts, Alex. Indeed, it would be quite complicated to
remove component trees from the {{updateCompleteQueue}}. But actually the bug
(seems to me that it) is fixable in a simpler way: just checking for a
{{nestLevel}} different from 0 before setting the component's {{initialized}}
flag to {{true}}. The bug's unit test passes with these changes, and I've just
done a smoke test of our (large) application with these {{LayoutManager}}
changes. Please see the patch that I've attached and let me know if you
anticipate any problems. In the meantime I'll add a couple more unit test
functions for some scenarios issues that I can anticipate. Thanks!
> LayoutManager initializes components which are no longer on stage
> -----------------------------------------------------------------
>
> Key: FLEX-35321
> URL: https://issues.apache.org/jira/browse/FLEX-35321
> Project: Apache Flex
> Issue Type: Bug
> Components: Layout - General
> Affects Versions: Apache Flex 4.16.0
> Reporter: Mihai Chira
> Assignee: Mihai Chira
> Fix For: Apache Flex 4.17.0
>
> Attachments: FLEX-35321 potential solution.patch
>
>
> *Scenario A*: during an object's validation cycle some code resulting from
> {{validateSize()}}, {{validateProperties()}} or {{validateDisplayList()}}
> results in the object's removal from stage.
> *Scenario B*: a user performs an action whose effect is the removal of a
> component, exactly when that component is being validated in phases
> ({{LayoutManager.usePhasedInstantiation == true}}, which is to say, in the
> span of two-three frames.
> (For the unit test that models this scenario.)
> ----
> *Expected behaviour*: {{LayoutManager}} detects the object's removal from
> stage, stops validating it, and never sets its {{initialized}} flag to
> {{true}}.
> *Actual behaviour*: {{LayoutManager}} does not detect the object's removal
> from stage, continues validating it, and ends up setting the object's
> {{initialized}} flag to {{true}}.
> *Unit test*: {{LayoutManager_FLEX_35321_Tests}}.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)