It should be fairly simple to have ContainerView set up the background if explicit width AND height are set. Given what you said/wrote, this seems to be the best fit. The problem I’ve run into is only an issue for <js:Container width="100" height="100”/>. All other situations shouldn’t produce an empty container space since at least one dimension is sized by content and in that case, as soon as a child is added you see the container.
—peter On 5/19/15, 11:13 AM, "Alex Harui" <aha...@adobe.com> wrote: >Interesting. We could do that, but it bugs me a bit. The deferred >childrenAdded call is intended to close a transaction where addElement >calls were told not to dispatch events on each call. If you look at it >that way, a deferred childrenAdded call is an optimization option also >available to folks just writing code in AS. > >If we make it a required transaction for the creation of a Container then >in AS it means that everybody has to remember to make that call. I’d like >to avoid that requirement if possible. > >If you check out the layout wiki page [1], views like ContainerView should >be checking 3 different scenarios. For an empty container, if sized by >the parent, ContainerView should get an event and then run its view code >which should call the layout code (which would do nothing as there are no >children) then call the background bead. I’m guessing the background bead >may not pick up the right size since nobody has set the size of the >actualParent. If so, ContainerView should be setting the size. > >For a container sized to content, I would argue nothing should show up, or >maybe the size needs to factor in padding. We’d have to see what browsers >do. > >For a container with set dimensions, the ContainerView should be setting >the actualParent’s size and background bead should be drawing accordingly. > So maybe the bug is in there some where. > >Of course, I could be wrong… >-Alex > > >[1] https://cwiki.apache.org/confluence/display/FLEX/FlexJS+Layout > > >On 5/19/15, 7:27 AM, "Peter Ent" <p...@adobe.com> wrote: > >>I¹ve been looking into this. >> >>In MXMLDataInterpreter.generateMXMLInstances, if the data parameter is >>null, the function immediately returns. This means you have something >>like >><js:Container /> - it has no children. >> >>I¹m wondering if a better approach might be to re-write this function as: >> >>public static function generateMXMLInstances(document:Object, >>parent:IParent, data:Array):void >>{ >> if (data) generateMXMLArray(document, parent, data); >> >> // maybe we can remove this. All IContainers should be >>IMXMLDocuments? >> if (parent is IContainer) >> { >> IContainer(parent).childrenAdded(); >> } >>} >> >> >>This way, childrenAdded is called all the time. It would mean that >>zero-or-more children were added vs one-or-more children were added. This >>would allow things that draw backgrounds to be called in a natural way. >>It >>would also mean that code that is optimized to work for one-or-more >>children should first check to see that there are children before >>proceeding. >> >>That do you think? >> >>‹peter >> >>On 5/18/15, 5:11 PM, "Alex Harui" <aha...@adobe.com> wrote: >> >>> >>> >>>On 5/18/15, 1:51 PM, "Peter Ent" <p...@adobe.com> wrote: >>> >>>>The container appears to have no size. I have it explict (400x400) and >>>>so >>>>it should be a colored rectangle. Without content you get a blank >>>>screen. >>>>Add a label and you get the label inside a 400x400 colored box. >>> >>>Ah, ok. If the container does have size then yes, it should draw >>>something. >>>-Alex >>> >> >