I agree that such a mechanism is fragile (apparently, since I have made this comment twice!).
But is this what `determinePlacement` `defaultplacement` and `ignoreplacment` are for? Should tabpanes just be using that mechanism? On 2011-03-18, at 14:26, André Bargull wrote: > Currently <basetabpane> uses the "_keepchildren" attribute to splice some > children from the beginning of the array passed to createChildren(). That > mechanism is a bit fragile, especially if one wants to subclass <tabpane>. In > LPP-4773, I've proposed to an option to differentiate where to place the > children of <basetabpane>. For example the <swatchview> in <tabpane> will be > marked with `options="notcontentchild"`, that way > <basetabpane>#createChildren() knows where to place <swatchview>. > > On 3/18/2011 7:09 PM, P T Withington wrote: >> I hadn't seen 4773 before. Can you summarize your "simple proposal"? >> >> On 2011-03-18, at 11:04, André Bargull wrote: >> >>> This looks similar to LPP-4773, so better don't make the same mistake twice! >>> >>> >>>> You left a (n uncommented) Debug.info in there. >>>> >>>> Perhaps we should extend initstage to handle this case? I.e., have >>>> initstage be able to specify which children to init when? I'm always >>>> leery of using explicit constants like '3'. >>>> >>>> On 2011-03-18, at 02:12,max at >>>> openlaszlo.org<http://www.openlaszlo.org/mailman/listinfo/laszlo-dev> >>>> wrote: >>>> >>>>> / Author: max >>>> />/ Date: 2011-03-17 23:12:38 -0700 (Thu, 17 Mar 2011) >>>> />/ New Revision: 18917 >>>> />/ >>>> />/ Modified: >>>> />/ components/trunk/lib/tab/tab.lzx >>>> />/ Log: >>>> />/ Change maxcarlson-20110317-Rbc bymaxcarlson at >>>> friendly<http://www.openlaszlo.org/mailman/listinfo/laszlo-dev> on >>>> 2011-03-17 10:12:51 PDT >>>> />/ in /Users/maxcarlson/openlaszlo/trunk2/my-apps/components-clean >>>> />/ forhttp://svn.openlaszlo.org/components/trunk >>>> />/ >>>> />/ Summary: Defer instantiation of tab contents until open() >>>> />/ >>>> />/ Bugs Fixed: LPP-9826 (partial) >>>> />/ >>>> />/ Technical Reviewer: promanik >>>> />/ QA Reviewer: hminsky >>>> />/ >>>> />/ Details: Use method from tabslider/tabelement to defer child creation >>>> until open(). >>>> />/ >>>> />/ Tests: test/tab_test.lzx starts up ~3x faster. >>>> />/ >>>> />/ >>>> />/ >>>> />/ Modified: components/trunk/lib/tab/tab.lzx >>>> />/ =================================================================== >>>> />/ --- components/trunk/lib/tab/tab.lzx 2011-03-17 23:50:35 UTC (rev >>>> 18916) >>>> />/ +++ components/trunk/lib/tab/tab.lzx 2011-03-18 06:12:38 UTC (rev >>>> 18917) >>>> />/ @@ -90,6 +90,9 @@ >>>> />/ if (this.selected === selected) return; >>>> />/ this.selected = selected; >>>> />/ >>>> />/ + // If we still have children to create, do it! >>>> />/ + if (this.__remainingChildren) this.__finishCreate(); >>>> />/ + >>>> />/ // Tell the tabgroup about the change (unless initiated >>>> by it) >>>> />/ var istabgroup = (this.parent instanceof lz.tabgroup); >>>> />/ if (istabgroup&& !parent.updating&& this.selected) { >>>> />/ @@ -181,6 +184,33 @@ >>>> />/ ]]> >>>> />/</method> >>>> />/ >>>> />/ +<!--- Override view.createChildren() to create only the first three >>>> />/ + children (the layout, tabtitle and tabpanel), >>>> deferring the rest >>>> />/ + until __finishCreate() is called >>>> />/ + @access private --> >>>> />/ +<method name="createChildren" args="children"> >>>> />/ +<![CDATA[ >>>> />/ + var istabgroup = (this.parent instanceof lz.tabgroup); >>>> />/ + if (istabgroup&& (! this.selected)) { >>>> />/ + super.createChildren(children.splice(0, 3)); >>>> />/ + if (children.length) { >>>> />/ + this.__remainingChildren = children; >>>> />/ + } >>>> />/ + } else { >>>> />/ + super.createChildren(children); >>>> />/ + } >>>> />/ + //Debug.info('createChildren', children); >>>> />/ + ]]> >>>> />/ +</method> >>>> />/ +<!--- Finish creating children >>>> />/ + @access private --> >>>> />/ +<method name="__finishCreate"> >>>> />/ +<![CDATA[ >>>> />/ + super.createChildren(this.__remainingChildren); >>>> />/ + Debug.info('__finishCreate', this.__remainingChildren); >>>> />/ + this.__remainingChildren = null; >>>> />/ + ]]> >>>> />/ +</method> >>>> />/</class> >>>> />/ >>>> />/ >>>> />/ >>>> />/ >>>> />/ _______________________________________________ >>>> />/ Laszlo-checkins mailing list >>>> />/ Laszlo-checkins at >>>> openlaszlo.org<http://www.openlaszlo.org/mailman/listinfo/laszlo-dev> >>>> />/ http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins >>>> / >> >>
