flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harbs <harbs.li...@gmail.com>
Subject Re: [07/13] git commit: [flex-asjs] [refs/heads/release0.8.0] - give up on trying to use FlexBox for full-screen 3-pane views. FlexBox seems more happy stretching to content size instead of clipping at the computed flex-ed size. These custom layouts wi...
Date Tue, 26 Sep 2017 20:25:25 GMT
I’m showing how to fix the “non-ForOverflow” layouts.

The problem is that Safari handles flex layouts differently than other browsers.

I’d like to use the flexbox layouts and AFAICT, they need browser sniffing to work across the board. Ideally, the browser sniffing should be included in the layout itself, but I was not sure the best way to do that…

> On Sep 26, 2017, at 11:02 PM, Alex Harui <aharui@adobe.com.INVALID> wrote:
> 
> I'm not sure if you have the exact same problem as ASDoc, but the ASDoc
> example is working fine with the "ForOverflow" layouts and no extra code
> in the app.  Or are you saying ASDoc isn't working for you on some browser?
> 
> IMO, that's the whole point of having many different flavors of layouts.
> Folks can try different ones until they find one that works.  No need to
> add custom code 3 places in the app.  Fixes for quirks get encapsulated
> into a PAYG variant of a base component.
> 
> My 2 cents,
> -Alex
> 
> On 9/26/17, 12:56 PM, "Harbs" <harbs.lists@gmail.com> wrote:
> 
>> I ran into the Safari problem in my app.
>> 
>> I needed to add code like this:
>> 
>> var info:BrowserInfo = BrowserInfo.current();
>> if(info.browser != "Safari" && info.formFactor.indexOf("iP") == -1){
>> 	outerContainer.percentHeight = 100;
>> 	leftResizeThumb.percentHeight = 100;
>> }
>> 
>> The components look something like this:
>> 
>> 		<js:Container x="0" y="40" width="100%" id="dockAndOuterContainer"
>> height="0%" style="align-items:stretch">
>> 			<js:beads>
>> 				<js:OneFlexibleChildHorizontalLayout flexibleChild="outerContainer"/>
>> 			</js:beads>
>> 			<components:LeftDock id="leftDock"/>
>> 			<js:Group visible="false" id="leftResizeThumb">
>> 			</js:Group>
>> 			<js:Container id="outerContainer"/>
>> 		</js:Container
>> 
>> Basically, all browsers except Safari and iOS browsers need to be set to
>> 100%. Safari and iOS browsers CANNOT be set to 100%.
>> 
>> I’m not sure how to generalize this code…
>> 
>> I have it in three places in my app to make it behave correctly.
>> 
>> I’ve been meaning to bring up this issue on the dev@ list. Sorry I didn’t
>> do it sooner… ;-)
>> 
>> Harbs
>> 
>>> On Sep 26, 2017, at 10:44 PM, Alex Harui <aharui@adobe.com.INVALID>
>>> wrote:
>>> 
>>> I just reverted ASDoc back to the "ForOverflow" layouts.  ASDoc was not
>>> showing up correctly for me (Safari).  Maybe flex-basis is handled
>>> differently on different browsers.  We can look into it more later.
>>> 
>>> Looking into this did make me glad we are changing over to "Royale" so
>>> "Flex" and "FlexJS" will not be confused with FlexBox and the flex-xxx
>>> attributes.
>>> 
>>> -Alex
>>> 
>>> On 7/31/17, 12:57 AM, "Harbs" <harbs.lists@gmail.com> wrote:
>>> 
>>>> The only example I found was the ASDoc app.
>>>> 
>>>> I switched it and it appears to work. (I pushed my changes.)
>>>> 
>>>>> On Jul 31, 2017, at 7:35 AM, Alex Harui <aharui@adobe.com.INVALID>
>>>>> wrote:
>>>>> 
>>>>> It will either work in the examples that use it or it won't.  Try it
>>>>> and
>>>>> find out.
>>>>> 
>>>>> -Alex
>>>>> 
>>>>> On 7/30/17, 3:04 AM, "Harbs" <harbs.lists@gmail.com> wrote:
>>>>> 
>>>>>> I think I just ran into the same issue.
>>>>>> 
>>>>>> This layout seems to more-or-less do the job, but it’s kind of heavy.
>>>>>> 
>>>>>> I did some research into flexbox and it appear that setting
>>>>>> flex-basis
>>>>>> to
>>>>>> 0 does the job. It needs to be set on ONLY the one flexible child.
>>>>>> 
>>>>>> Here’s a codepen which shows a use case.
>>>>>> 
>>>>>> 
>>>>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcodep
>>>>>> en
>>>>>> .i
>>>>>> 
>>>>>> 
>>>>>> o%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d
>>>>>> 4d
>>>>>> 73
>>>>>> 
>>>>>> 
>>>>>> 2638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>>>>> sd
>>>>>> at
>>>>>> a=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0
>>>>>> 
>>>>>> 
>>>>>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcode
>>>>>> pe
>>>>>> n.
>>>>>> 
>>>>>> 
>>>>>> io%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08
>>>>>> d4
>>>>>> d7
>>>>>> 
>>>>>> 
>>>>>> 32638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511
>>>>>> &s
>>>>>> da
>>>>>> ta=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0>
>>>>>> 
>>>>>> I noticed that the OneFlexibleLayouts have code which set the
>>>>>> flex-basis
>>>>>> of the children if a percentage value is set. When setting the size
>>>>>> of
>>>>>> the one flexible child to 0% this causes the flex-basis to be set to
>>>>>> 0
>>>>>> and then the one flexible child will fit the remaining space even if
>>>>>> it
>>>>>> might overflow because of its children.
>>>>>> 
>>>>>> I have wasted quite a bit of time before I discovered this. I’m not
>>>>>> sure
>>>>>> whether the OneFlexibleLayout classes should be changed, or maybe we
>>>>>> need
>>>>>> documentation that to fit content that might overflow, the percentage
>>>>>> should be set to 0. It could be there are cases where the entire
>>>>>> OnFlexibleLayout should be fit when smaller and expand (and not
>>>>>> scroll)
>>>>>> when bigger. In that case, the current behavior might be correct.
>>>>>> 
>>>>>> Thoughts?
>>>>>> Harbs
>>>>>> 
>>>>>>> On May 23, 2017, at 10:16 AM, aharui@apache.org wrote:
>>>>>>> 
>>>>>>> give up on trying to use FlexBox for full-screen 3-pane views.
>>>>>>> FlexBox
>>>>>>> seems more happy stretching to content size instead of clipping at
>>>>>>> the
>>>>>>> computed flex-ed size.  These custom layouts will do the proper
>>>>>>> sizing
>>>>>>> 
>>>>>>> 
>>>>>>> Project: 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C699bb
>>>>>>> b1
>>>>>>> 70
>>>>>>> 
>>>>>>> 
>>>>>>> b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C
>>>>>>> 63
>>>>>>> 63
>>>>>>> 
>>>>>>> 
>>>>>>> 70058818766511&sdata=P%2FMkfZAwCYwpQEoCe5UGx8tW0mZaIZsMdDg6VxlaKWA%3D
>>>>>>> &r
>>>>>>> es
>>>>>>> erved=0
>>>>>>> Commit: 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2Fbdd34d2e&data=02%7C
>>>>>>> 01
>>>>>>> %7
>>>>>>> 
>>>>>>> 
>>>>>>> C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dece
>>>>>>> e1
>>>>>>> %7
>>>>>>> 
>>>>>>> 
>>>>>>> C0%7C0%7C636370058818766511&sdata=QosBAau8lE4nCS7c%2F8B6GDc%2Bqa%2BpS
>>>>>>> ko
>>>>>>> P5
>>>>>>> 5x3oji5FnI%3D&reserved=0
>>>>>>> Tree: 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2Fbdd34d2e&data=02%7C01
>>>>>>> %7
>>>>>>> C%
>>>>>>> 
>>>>>>> 
>>>>>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>> %7
>>>>>>> C0
>>>>>>> 
>>>>>>> 
>>>>>>> %7C0%7C636370058818766511&sdata=T4CCqwtn%2FgFTmAnaI%2BuCXqtX0P75ebpKV
>>>>>>> ZO
>>>>>>> xf
>>>>>>> XOTbIE%3D&reserved=0
>>>>>>> Diff: 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2Fbdd34d2e&data=02%7C01
>>>>>>> %7
>>>>>>> C%
>>>>>>> 
>>>>>>> 
>>>>>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>> %7
>>>>>>> C0
>>>>>>> 
>>>>>>> 
>>>>>>> %7C0%7C636370058818766511&sdata=f8WVJXc81KrLMuUgRckULYCfglNL7d%2BfdjS
>>>>>>> bB
>>>>>>> BU
>>>>>>> 0fRo%3D&reserved=0
>>>>>>> 
>>>>>>> Branch: refs/heads/release0.8.0
>>>>>>> Commit: bdd34d2ef4d8117fa1b222ac470482a42dbea9eb
>>>>>>> Parents: c505d67
>>>>>>> Author: Alex Harui <aharui@apache.org>
>>>>>>> Authored: Mon May 22 10:12:02 2017 -0700
>>>>>>> Committer: Alex Harui <aharui@apache.org>
>>>>>>> Committed: Tue May 23 00:15:56 2017 -0700
>>>>>>> 
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> ...eFlexibleChildHorizontalLayoutForOverflow.as | 290
>>>>>>> ++++++++++++++++++
>>>>>>> ...xibleChildHorizontalLayoutLockChildHeight.as |  91 ------
>>>>>>> ...OneFlexibleChildVerticalLayoutForOverflow.as | 291
>>>>>>> +++++++++++++++++++
>>>>>>> ...FlexibleChildVerticalLayoutLockChildWidth.as |  93 ------
>>>>>>> .../Basic/src/main/resources/basic-manifest.xml |   4 +-
>>>>>>> 5 files changed, 583 insertions(+), 186 deletions(-)
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks
>>>>>>> %2
>>>>>>> Fp
>>>>>>> 
>>>>>>> 
>>>>>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbe
>>>>>>> ad
>>>>>>> s%
>>>>>>> 
>>>>>>> 
>>>>>>> 2Flayouts%2FOneFlexibleChildHorizontalLayoutForOverflow.as&data=02%7C
>>>>>>> 01
>>>>>>> %7
>>>>>>> 
>>>>>>> 
>>>>>>> C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dece
>>>>>>> e1
>>>>>>> %7
>>>>>>> 
>>>>>>> 
>>>>>>> C0%7C0%7C636370058818766511&sdata=L7BjG%2BM7nTwguX%2BNaE5Op6BIT7XZrEq
>>>>>>> KF
>>>>>>> op
>>>>>>> 0D%2Frc0Aw%3D&reserved=0
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> diff --git 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>>>>>> new file mode 100644
>>>>>>> index 0000000..c6abc22
>>>>>>> --- /dev/null
>>>>>>> +++ 
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>>>>>> @@ -0,0 +1,290 @@
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> +////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> +//
>>>>>>> +//  Licensed to the Apache Software Foundation (ASF) under one or
>>>>>>> more
>>>>>>> +//  contributor license agreements.  See the NOTICE file
>>>>>>> distributed
>>>>>>> with
>>>>>>> +//  this work for additional information regarding copyright
>>>>>>> ownership.
>>>>>>> +//  The ASF licenses this file to You under the Apache License,
>>>>>>> Version 2.0
>>>>>>> +//  (the "License"); you may not use this file except in compliance
>>>>>>> with
>>>>>>> +//  the License.  You may obtain a copy of the License at
>>>>>>> +//
>>>>>>> +//      
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.a
>>>>>>> pa
>>>>>>> ch
>>>>>>> 
>>>>>>> 
>>>>>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae
>>>>>>> 08
>>>>>>> d4
>>>>>>> 
>>>>>>> 
>>>>>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766
>>>>>>> 51
>>>>>>> 1&
>>>>>>> sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0
>>>>>>> +//
>>>>>>> +//  Unless required by applicable law or agreed to in writing,
>>>>>>> software
>>>>>>> +//  distributed under the License is distributed on an "AS IS"
>>>>>>> BASIS,
>>>>>>> +//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>>>> implied.
>>>>>>> +//  See the License for the specific language governing permissions
>>>>>>> and
>>>>>>> +//  limitations under the License.
>>>>>>> +//
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> +////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> +package org.apache.flex.html.beads.layouts
>>>>>>> +{
>>>>>>> +	import org.apache.flex.core.LayoutBase;
>>>>>>> +	import org.apache.flex.core.IDocument;
>>>>>>> +	import org.apache.flex.core.ILayoutChild;
>>>>>>> +	import org.apache.flex.core.ILayoutHost;
>>>>>>> +	import org.apache.flex.core.ILayoutView;
>>>>>>> +	import org.apache.flex.core.ILayoutParent;
>>>>>>> +	import org.apache.flex.core.IParentIUIBase;
>>>>>>> +	import org.apache.flex.core.IStrand;
>>>>>>> +	import org.apache.flex.core.IUIBase;
>>>>>>> +	import org.apache.flex.core.ValuesManager;
>>>>>>> +	import org.apache.flex.core.UIBase;
>>>>>>> +	import org.apache.flex.events.Event;
>>>>>>> +	import org.apache.flex.geom.Rectangle;
>>>>>>> +	import org.apache.flex.utils.CSSContainerUtils;
>>>>>>> +	import org.apache.flex.utils.CSSUtils;
>>>>>>> +
>>>>>>> +    /**
>>>>>>> +     *  The OneFlexibleChildHorizontalLayoutForOverflowis
>>>>>>> +	 *  intended for building apps that clip
>>>>>>> +	 *  and/or scroll the overflow, especially in a
>>>>>>> +	 *  3-pane view like the ASDoc examples.  It does not use
>>>>>>> +	 *  FlexBox because FlexBox wants to grow to the size
>>>>>>> +	 *  of the content without specifying width/height on
>>>>>>> +	 *  the flexible child.  But then the children in
>>>>>>> +	 *  the flexible child cannot use % sizing.
>>>>>>> +	 *  This layout presumes the parent is a known size.
>>>>>>> +	 *
>>>>>>> +     *  @langversion 3.0
>>>>>>> +     *  @playerversion Flash 10.2
>>>>>>> +     *  @playerversion AIR 2.6
>>>>>>> +     *  @productversion FlexJS 0.0
>>>>>>> +     */
>>>>>>> +	public class OneFlexibleChildHorizontalLayoutForOverflow extends
>>>>>>> LayoutBase implements IOneFlexibleChildLayout, IDocument
>>>>>>> +	{
>>>>>>> +        /**
>>>>>>> +         *  Constructor.
>>>>>>> +         *
>>>>>>> +         *  @langversion 3.0
>>>>>>> +         *  @playerversion Flash 10.2
>>>>>>> +         *  @playerversion AIR 2.6
>>>>>>> +         *  @productversion FlexJS 0.0
>>>>>>> +         */
>>>>>>> +		public function OneFlexibleChildHorizontalLayoutForOverflow()
>>>>>>> +		{
>>>>>>> +			super();
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        private var _flexibleChild:String;
>>>>>>> +
>>>>>>> +        protected var actualChild:ILayoutChild;
>>>>>>> +
>>>>>>> +        /**
>>>>>>> +         *  @private
>>>>>>> +         *  The document.
>>>>>>> +         */
>>>>>>> +        private var document:Object;
>>>>>>> +
>>>>>>> +		/**
>>>>>>> +		 *  The id of the flexible child
>>>>>>> +		 *
>>>>>>> +		 *  @langversion 3.0
>>>>>>> +		 *  @playerversion Flash 10.2
>>>>>>> +		 *  @playerversion AIR 2.6
>>>>>>> +		 *  @productversion FlexJS 0.0
>>>>>>> +		 */
>>>>>>> +		public function get flexibleChild():String
>>>>>>> +		{
>>>>>>> +			return _flexibleChild;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +		/**
>>>>>>> +		 * @private
>>>>>>> +		 */
>>>>>>> +		public function set flexibleChild(value:String):void
>>>>>>> +		{
>>>>>>> +			_flexibleChild = value;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        /**
>>>>>>> +         * @copy org.apache.flex.core.IBeadLayout#layout
>>>>>>> +         */
>>>>>>> +		COMPILE::JS
>>>>>>> +		override public function layout():Boolean
>>>>>>> +		{
>>>>>>> +			var contentView:ILayoutView = layoutView;
>>>>>>> +
>>>>>>> +			actualChild = document[flexibleChild];
>>>>>>> +
>>>>>>> +			var n:int = contentView.numElements;
>>>>>>> +			if (n == 0) return false;
>>>>>>> +
>>>>>>> +			for(var i:int=0; i < n; i++) {
>>>>>>> +				var child:UIBase = contentView.getElementAt(i) as UIBase;
>>>>>>> +				if (child.element.style["display"] != "inline-flex" &&
>>>>>>> child.element.style["display"] != "none")
>>>>>>> +					child.element.style["display"] = "inline-block";
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			var w:Number = host.width;
>>>>>>> +			for(i=0; i < n; i++) {
>>>>>>> +				child = contentView.getElementAt(i) as UIBase;
>>>>>>> +				if (child != actualChild)
>>>>>>> +					w -= child.width;
>>>>>>> +			}
>>>>>>> +			actualChild.width = w;
>>>>>>> +					
>>>>>>> +			return true;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +		COMPILE::SWF
>>>>>>> +		override public function layout():Boolean
>>>>>>> +		{
>>>>>>> +			var contentView:ILayoutView = layoutView;
>>>>>>> +			actualChild = document.hasOwnProperty(flexibleChild) ?
>>>>>>> document[flexibleChild] : null;
>>>>>>> +
>>>>>>> +			var n:Number = contentView.numElements;
>>>>>>> +			if (n == 0) return false;
>>>>>>> +			
>>>>>>> +			var maxWidth:Number = 0;
>>>>>>> +			var maxHeight:Number = 0;
>>>>>>> +			var hostSizedToContent:Boolean = host.isHeightSizedToContent();
>>>>>>> +			var hostWidth:Number = host.width;
>>>>>>> +			var hostHeight:Number = host.height;
>>>>>>> +
>>>>>>> +			var ilc:ILayoutChild;
>>>>>>> +			var data:Object;
>>>>>>> +			var canAdjust:Boolean = false;
>>>>>>> +			var margins:Object;
>>>>>>> +
>>>>>>> +			var paddingMetrics:Rectangle =
>>>>>>> CSSContainerUtils.getPaddingMetrics(host);
>>>>>>> +			var borderMetrics:Rectangle =
>>>>>>> CSSContainerUtils.getBorderMetrics(host);
>>>>>>> +			
>>>>>>> +			// adjust the host's usable size by the metrics. If
>>>>>>> hostSizedToContent, then the
>>>>>>> +			// resulting adjusted value may be less than zero.
>>>>>>> +			hostWidth -= paddingMetrics.left + paddingMetrics.right +
>>>>>>> borderMetrics.left + borderMetrics.right;
>>>>>>> +			hostHeight -= paddingMetrics.top + paddingMetrics.bottom +
>>>>>>> borderMetrics.top + borderMetrics.bottom;
>>>>>>> +
>>>>>>> +			var xpos:Number = borderMetrics.left + paddingMetrics.left;
>>>>>>> +			var ypos:Number = borderMetrics.top + paddingMetrics.left;
>>>>>>> +			var child:IUIBase;
>>>>>>> +			var childHeight:Number;
>>>>>>> +			var i:int;
>>>>>>> +			var childYpos:Number;
>>>>>>> +			var adjustLeft:Number = 0;
>>>>>>> +			var adjustRight:Number = hostWidth + borderMetrics.left +
>>>>>>> paddingMetrics.left;
>>>>>>> +
>>>>>>> +			// first work from left to right
>>>>>>> +			for(i=0; i < n; i++)
>>>>>>> +			{
>>>>>>> +				child = contentView.getElementAt(i) as IUIBase;
>>>>>>> +				if (child == null || !child.visible) continue;
>>>>>>> +				if (child == actualChild) break;
>>>>>>> +
>>>>>>> +				margins = childMargins(child, hostWidth, hostHeight);
>>>>>>> +				ilc = child as ILayoutChild;
>>>>>>> +
>>>>>>> +				xpos += margins.left;
>>>>>>> +
>>>>>>> +				childYpos = ypos + margins.top; // default y position
>>>>>>> +
>>>>>>> +				childHeight = child.height;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentHeight)) {
>>>>>>> +						childHeight = host.height * ilc.percentHeight/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitHeight)) {
>>>>>>> +						childHeight = host.height;
>>>>>>> +					}
>>>>>>> +					ilc.setHeight(childHeight);
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setX(xpos);
>>>>>>> +					ilc.setY(childYpos);
>>>>>>> +
>>>>>>> +					if (!isNaN(ilc.percentWidth)) {
>>>>>>> +						ilc.setWidth(hostWidth * ilc.percentWidth / 100);
>>>>>>> +					}
>>>>>>> +
>>>>>>> +				} else {
>>>>>>> +					child.x = xpos;
>>>>>>> +					child.y = childYpos;
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				xpos += child.width + margins.right;
>>>>>>> +				adjustLeft = xpos;
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			// then work from right to left
>>>>>>> +			xpos = hostWidth + borderMetrics.left + paddingMetrics.left;
>>>>>>> +
>>>>>>> +			for(i=(n-1); actualChild != null && i >= 0; i--)
>>>>>>> +			{
>>>>>>> +				child = contentView.getElementAt(i) as IUIBase;
>>>>>>> +				if (child == null || !child.visible) continue;
>>>>>>> +				if (child == actualChild) break;
>>>>>>> +
>>>>>>> +				margins = childMargins(child, hostWidth, hostHeight);
>>>>>>> +				ilc = child as ILayoutChild;
>>>>>>> +
>>>>>>> +				childYpos = ypos + margins.top; // default y position
>>>>>>> +
>>>>>>> +				childHeight = child.height;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentHeight)) {
>>>>>>> +						childHeight = host.height * ilc.percentHeight/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitHeight)) {
>>>>>>> +						childHeight = host.height;
>>>>>>> +					}
>>>>>>> +					ilc.setHeight(childHeight);
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					if (!isNaN(ilc.percentWidth)) {
>>>>>>> +						ilc.setWidth(hostWidth * ilc.percentWidth / 100);
>>>>>>> +					}
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				xpos -= child.width + margins.right;
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setX(xpos);
>>>>>>> +					ilc.setY(childYpos);
>>>>>>> +				} else {
>>>>>>> +					child.x = xpos;
>>>>>>> +					child.y = childYpos;
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				xpos -= margins.left;
>>>>>>> +				adjustRight = xpos;
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			// now adjust the actualChild to fill the space.
>>>>>>> +			if (actualChild != null) {
>>>>>>> +				margins = childMargins(actualChild, hostWidth, hostHeight);
>>>>>>> +				ilc = actualChild as ILayoutChild;
>>>>>>> +				childHeight = actualChild.height;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentHeight)) {
>>>>>>> +						childHeight = host.height * ilc.percentHeight/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitHeight)) {
>>>>>>> +						childHeight = host.height;
>>>>>>> +					}
>>>>>>> +					ilc.setHeight(childHeight);
>>>>>>> +				}
>>>>>>> +				childYpos = ypos + margins.top;
>>>>>>> +				actualChild.x = adjustLeft + margins.left;
>>>>>>> +				actualChild.y = childYpos;
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setWidth((adjustRight-margins.right) -
>>>>>>> (adjustLeft+margins.left));
>>>>>>> +				} else {
>>>>>>> +					actualChild.width = (adjustRight-margins.right) -
>>>>>>> (adjustLeft+margins.left);
>>>>>>> +				}
>>>>>>> +			}
>>>>>>> +
>>>>>>> +            return true;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        public function setDocument(document:Object, id:String =
>>>>>>> null):void
>>>>>>> +        {
>>>>>>> +            this.document = document;
>>>>>>> +        }
>>>>>>> +
>>>>>>> +    }
>>>>>>> +
>>>>>>> +}
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks
>>>>>>> %2
>>>>>>> Fp
>>>>>>> 
>>>>>>> 
>>>>>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbe
>>>>>>> ad
>>>>>>> s%
>>>>>>> 
>>>>>>> 
>>>>>>> 2Flayouts%2FOneFlexibleChildHorizontalLayoutLockChildHeight.as&data=0
>>>>>>> 2%
>>>>>>> 7C
>>>>>>> 
>>>>>>> 
>>>>>>> 01%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178
>>>>>>> de
>>>>>>> ce
>>>>>>> 
>>>>>>> 
>>>>>>> e1%7C0%7C0%7C636370058818766511&sdata=Ir1Siye21IUzzijpvWA1XmQN0AbHktL
>>>>>>> u%
>>>>>>> 2F
>>>>>>> u3h%2BRtBZT0%3D&reserved=0
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> diff --git 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>>>>>> deleted file mode 100644
>>>>>>> index d170d23..0000000
>>>>>>> --- 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>>>>>> +++ /dev/null
>>>>>>> @@ -1,91 +0,0 @@
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> -//
>>>>>>> -//  Licensed to the Apache Software Foundation (ASF) under one or
>>>>>>> more
>>>>>>> -//  contributor license agreements.  See the NOTICE file
>>>>>>> distributed
>>>>>>> with
>>>>>>> -//  this work for additional information regarding copyright
>>>>>>> ownership.
>>>>>>> -//  The ASF licenses this file to You under the Apache License,
>>>>>>> Version 2.0
>>>>>>> -//  (the "License"); you may not use this file except in compliance
>>>>>>> with
>>>>>>> -//  the License.  You may obtain a copy of the License at
>>>>>>> -//
>>>>>>> -//      
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.a
>>>>>>> pa
>>>>>>> ch
>>>>>>> 
>>>>>>> 
>>>>>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae
>>>>>>> 08
>>>>>>> d4
>>>>>>> 
>>>>>>> 
>>>>>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766
>>>>>>> 51
>>>>>>> 1&
>>>>>>> sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0
>>>>>>> -//
>>>>>>> -//  Unless required by applicable law or agreed to in writing,
>>>>>>> software
>>>>>>> -//  distributed under the License is distributed on an "AS IS"
>>>>>>> BASIS,
>>>>>>> -//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>>>> implied.
>>>>>>> -//  See the License for the specific language governing permissions
>>>>>>> and
>>>>>>> -//  limitations under the License.
>>>>>>> -//
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> -package org.apache.flex.html.beads.layouts
>>>>>>> -{
>>>>>>> -	import org.apache.flex.core.LayoutBase;
>>>>>>> -	import org.apache.flex.core.IDocument;
>>>>>>> -	import org.apache.flex.core.ILayoutChild;
>>>>>>> -	import org.apache.flex.core.ILayoutHost;
>>>>>>> -	import org.apache.flex.core.ILayoutView;
>>>>>>> -	import org.apache.flex.core.ILayoutParent;
>>>>>>> -	import org.apache.flex.core.IParentIUIBase;
>>>>>>> -	import org.apache.flex.core.IStrand;
>>>>>>> -	import org.apache.flex.core.IUIBase;
>>>>>>> -	import org.apache.flex.core.ValuesManager;
>>>>>>> -	import org.apache.flex.core.UIBase;
>>>>>>> -	import org.apache.flex.events.Event;
>>>>>>> -	import org.apache.flex.geom.Rectangle;
>>>>>>> -	import org.apache.flex.utils.CSSContainerUtils;
>>>>>>> -	import org.apache.flex.utils.CSSUtils;
>>>>>>> -
>>>>>>> -    /**
>>>>>>> -     *  The OneFlexibleChildHorizontalLayoutLockChildHeight
>>>>>>> -	 *  is a subclass of OneFlexibleChildHorizontalLayout
>>>>>>> -	 *  that sets the flexible child's height to be the height
>>>>>>> -	 *  of the host container.  This is useful when you
>>>>>>> -	 *  don't want the actual child's height to dictate the
>>>>>>> -	 *  height of the container in order to force
>>>>>>> -	 *  scrollbars
>>>>>>> -     *
>>>>>>> -     *  @langversion 3.0
>>>>>>> -     *  @playerversion Flash 10.2
>>>>>>> -     *  @playerversion AIR 2.6
>>>>>>> -     *  @productversion FlexJS 0.0
>>>>>>> -     */
>>>>>>> -	public class OneFlexibleChildHorizontalLayoutLockChildHeight
>>>>>>> extends
>>>>>>> OneFlexibleChildHorizontalLayout
>>>>>>> -	{
>>>>>>> -        /**
>>>>>>> -         *  Constructor.
>>>>>>> -         *
>>>>>>> -         *  @langversion 3.0
>>>>>>> -         *  @playerversion Flash 10.2
>>>>>>> -         *  @playerversion AIR 2.6
>>>>>>> -         *  @productversion FlexJS 0.0
>>>>>>> -         */
>>>>>>> -		public function OneFlexibleChildHorizontalLayoutLockChildHeight()
>>>>>>> -		{
>>>>>>> -			super();
>>>>>>> -		}
>>>>>>> -
>>>>>>> -        /**
>>>>>>> -         * @copy org.apache.flex.core.IBeadLayout#layout
>>>>>>> -         */
>>>>>>> -		override public function layout():Boolean
>>>>>>> -		{
>>>>>>> -			var ret:Boolean = super.layout();
>>>>>>> -			if (ret)
>>>>>>> -			{
>>>>>>> -				var contentView:ILayoutView = layoutView;
>>>>>>> -	
>>>>>>> -				var n:int = contentView.numElements;
>>>>>>> -
>>>>>>> -				var h:Number = host.height;
>>>>>>> -				for(var i:int=0; i < n; i++) {
>>>>>>> -					var child:UIBase = contentView.getElementAt(i) as UIBase;
>>>>>>> -					if (child != actualChild)
>>>>>>> -						h = child.height;
>>>>>>> -				}
>>>>>>> -				actualChild.setHeight(h);
>>>>>>> -			}
>>>>>>> -			return ret;
>>>>>>> -		}
>>>>>>> -
>>>>>>> -    }
>>>>>>> -
>>>>>>> -}
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks
>>>>>>> %2
>>>>>>> Fp
>>>>>>> 
>>>>>>> 
>>>>>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbe
>>>>>>> ad
>>>>>>> s%
>>>>>>> 
>>>>>>> 
>>>>>>> 2Flayouts%2FOneFlexibleChildVerticalLayoutForOverflow.as&data=02%7C01
>>>>>>> %7
>>>>>>> C%
>>>>>>> 
>>>>>>> 
>>>>>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>> %7
>>>>>>> C0
>>>>>>> 
>>>>>>> 
>>>>>>> %7C0%7C636370058818766511&sdata=WdJnx6IGbPwIxUibKB3UqfKTHgHugWIleqBVs
>>>>>>> qJ
>>>>>>> 5f
>>>>>>> eE%3D&reserved=0
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> diff --git 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>>>>>> new file mode 100644
>>>>>>> index 0000000..5679f80
>>>>>>> --- /dev/null
>>>>>>> +++ 
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>>>>>> @@ -0,0 +1,291 @@
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> +////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> +//
>>>>>>> +//  Licensed to the Apache Software Foundation (ASF) under one or
>>>>>>> more
>>>>>>> +//  contributor license agreements.  See the NOTICE file
>>>>>>> distributed
>>>>>>> with
>>>>>>> +//  this work for additional information regarding copyright
>>>>>>> ownership.
>>>>>>> +//  The ASF licenses this file to You under the Apache License,
>>>>>>> Version 2.0
>>>>>>> +//  (the "License"); you may not use this file except in compliance
>>>>>>> with
>>>>>>> +//  the License.  You may obtain a copy of the License at
>>>>>>> +//
>>>>>>> +//      
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.a
>>>>>>> pa
>>>>>>> ch
>>>>>>> 
>>>>>>> 
>>>>>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae
>>>>>>> 08
>>>>>>> d4
>>>>>>> 
>>>>>>> 
>>>>>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766
>>>>>>> 51
>>>>>>> 1&
>>>>>>> sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0
>>>>>>> +//
>>>>>>> +//  Unless required by applicable law or agreed to in writing,
>>>>>>> software
>>>>>>> +//  distributed under the License is distributed on an "AS IS"
>>>>>>> BASIS,
>>>>>>> +//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>>>> implied.
>>>>>>> +//  See the License for the specific language governing permissions
>>>>>>> and
>>>>>>> +//  limitations under the License.
>>>>>>> +//
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> +////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> +package org.apache.flex.html.beads.layouts
>>>>>>> +{
>>>>>>> +	import org.apache.flex.core.LayoutBase;
>>>>>>> +	import org.apache.flex.core.IDocument;
>>>>>>> +	import org.apache.flex.core.ILayoutChild;
>>>>>>> +	import org.apache.flex.core.ILayoutHost;
>>>>>>> +	import org.apache.flex.core.ILayoutView;
>>>>>>> +	import org.apache.flex.core.ILayoutParent;
>>>>>>> +	import org.apache.flex.core.IParentIUIBase;
>>>>>>> +	import org.apache.flex.core.IStrand;
>>>>>>> +	import org.apache.flex.core.IStyleableObject;
>>>>>>> +	import org.apache.flex.core.IUIBase;
>>>>>>> +	import org.apache.flex.core.ValuesManager;
>>>>>>> +	import org.apache.flex.core.UIBase;
>>>>>>> +	import org.apache.flex.events.Event;
>>>>>>> +	import org.apache.flex.geom.Rectangle;
>>>>>>> +	import org.apache.flex.utils.CSSContainerUtils;
>>>>>>> +	import org.apache.flex.utils.CSSUtils;
>>>>>>> +
>>>>>>> +    /**
>>>>>>> +     *  The OneFlexibleChildVerticalLayoutForOverflow is
>>>>>>> +	 *  intended for building apps that clip
>>>>>>> +	 *  and/or scroll the overflow, especially in a
>>>>>>> +	 *  3-pane view like the ASDoc examples.  It does not use
>>>>>>> +	 *  FlexBox because FlexBox wants to grow to the size
>>>>>>> +	 *  of the content without specifying width/height on
>>>>>>> +	 *  the flexible child.  But then the children in
>>>>>>> +	 *  the flexible child cannot use % sizing.
>>>>>>> +	 *  This layout presumes the parent is a known size.
>>>>>>> +     *
>>>>>>> +     *  @langversion 3.0
>>>>>>> +     *  @playerversion Flash 10.2
>>>>>>> +     *  @playerversion AIR 2.6
>>>>>>> +     *  @productversion FlexJS 0.0
>>>>>>> +     */
>>>>>>> +	public class OneFlexibleChildVerticalLayoutForOverflow extends
>>>>>>> LayoutBase implements IOneFlexibleChildLayout, IDocument
>>>>>>> +	{
>>>>>>> +        /**
>>>>>>> +         *  Constructor.
>>>>>>> +         *
>>>>>>> +         *  @langversion 3.0
>>>>>>> +         *  @playerversion Flash 10.2
>>>>>>> +         *  @playerversion AIR 2.6
>>>>>>> +         *  @productversion FlexJS 0.0
>>>>>>> +         */
>>>>>>> +		public function OneFlexibleChildVerticalLayoutForOverflow()
>>>>>>> +		{
>>>>>>> +			super();
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        private var _flexibleChild:String;
>>>>>>> +
>>>>>>> +        protected var actualChild:ILayoutChild;
>>>>>>> +
>>>>>>> +        /**
>>>>>>> +         *  @private
>>>>>>> +         *  The document.
>>>>>>> +         */
>>>>>>> +        private var document:Object;
>>>>>>> +
>>>>>>> +		/**
>>>>>>> +		 *  The id of the flexible child
>>>>>>> +		 *
>>>>>>> +		 *  @langversion 3.0
>>>>>>> +		 *  @playerversion Flash 10.2
>>>>>>> +		 *  @playerversion AIR 2.6
>>>>>>> +		 *  @productversion FlexJS 0.0
>>>>>>> +		 */
>>>>>>> +		public function get flexibleChild():String
>>>>>>> +		{
>>>>>>> +			return _flexibleChild;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +		/**
>>>>>>> +		 * @private
>>>>>>> +		 */
>>>>>>> +		public function set flexibleChild(value:String):void
>>>>>>> +		{
>>>>>>> +			_flexibleChild = value;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        /**
>>>>>>> +         * @copy org.apache.flex.core.IBeadLayout#layout
>>>>>>> +         */
>>>>>>> +		COMPILE::JS
>>>>>>> +		override public function layout():Boolean
>>>>>>> +		{
>>>>>>> +			var contentView:ILayoutView = layoutView;
>>>>>>> +
>>>>>>> +			actualChild = document[flexibleChild];
>>>>>>> +
>>>>>>> +			var n:int = contentView.numElements;
>>>>>>> +			if (n == 0) return false;
>>>>>>> +
>>>>>>> +			for(var i:int=0; i < n; i++) {
>>>>>>> +				var child:UIBase = contentView.getElementAt(i) as UIBase;
>>>>>>> +				if (child.element.style["display"] != "flex" &&
>>>>>>> child.element.style["display"] != "none")
>>>>>>> +					child.element.style["display"] = "block";
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			var h:Number = host.height;
>>>>>>> +			for(i=0; i < n; i++) {
>>>>>>> +				child = contentView.getElementAt(i) as UIBase;
>>>>>>> +				if (child != actualChild)
>>>>>>> +					h -= child.height;
>>>>>>> +			}
>>>>>>> +			actualChild.height = h;
>>>>>>> +					
>>>>>>> +			return true;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +		COMPILE::SWF
>>>>>>> +		override public function layout():Boolean
>>>>>>> +		{
>>>>>>> +			var contentView:ILayoutView = layoutView;
>>>>>>> +			actualChild = document.hasOwnProperty(flexibleChild) ?
>>>>>>> document[flexibleChild] : null;
>>>>>>> +
>>>>>>> +			var n:Number = contentView.numElements;
>>>>>>> +			if (n == 0) return false;
>>>>>>> +			
>>>>>>> +			var maxWidth:Number = 0;
>>>>>>> +			var maxHeight:Number = 0;
>>>>>>> +			var hostSizedToContent:Boolean = host.isWidthSizedToContent();
>>>>>>> +			var hostWidth:Number = host.width;
>>>>>>> +			var hostHeight:Number = host.height;
>>>>>>> +
>>>>>>> +			var ilc:ILayoutChild;
>>>>>>> +			var data:Object;
>>>>>>> +			var canAdjust:Boolean = false;
>>>>>>> +			var margins:Object;
>>>>>>> +
>>>>>>> +			var paddingMetrics:Rectangle =
>>>>>>> CSSContainerUtils.getPaddingMetrics(host);
>>>>>>> +			var borderMetrics:Rectangle =
>>>>>>> CSSContainerUtils.getBorderMetrics(host);
>>>>>>> +			
>>>>>>> +			// adjust the host's usable size by the metrics. If
>>>>>>> hostSizedToContent, then the
>>>>>>> +			// resulting adjusted value may be less than zero.
>>>>>>> +			hostWidth -= paddingMetrics.left + paddingMetrics.right +
>>>>>>> borderMetrics.left + borderMetrics.right;
>>>>>>> +			hostHeight -= paddingMetrics.top + paddingMetrics.bottom +
>>>>>>> borderMetrics.top + borderMetrics.bottom;
>>>>>>> +
>>>>>>> +			var xpos:Number = borderMetrics.left + paddingMetrics.left;
>>>>>>> +			var ypos:Number = borderMetrics.top + paddingMetrics.left;
>>>>>>> +			var child:IUIBase;
>>>>>>> +			var childWidth:Number;
>>>>>>> +			var i:int;
>>>>>>> +			var childXpos:Number;
>>>>>>> +			var adjustTop:Number = 0;
>>>>>>> +			var adjustBottom:Number = hostHeight + borderMetrics.top +
>>>>>>> paddingMetrics.top;
>>>>>>> +
>>>>>>> +			// first work from top to bottom
>>>>>>> +			for(i=0; i < n; i++)
>>>>>>> +			{
>>>>>>> +				child = contentView.getElementAt(i) as IUIBase;
>>>>>>> +				if (child == null || !child.visible) continue;
>>>>>>> +				if (child == actualChild) break;
>>>>>>> +
>>>>>>> +				margins = childMargins(child, hostWidth, hostHeight);
>>>>>>> +				ilc = child as ILayoutChild;
>>>>>>> +
>>>>>>> +				ypos += margins.top;
>>>>>>> +
>>>>>>> +				childXpos = xpos + margins.left; // default x position
>>>>>>> +
>>>>>>> +				childWidth = child.width;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentWidth)) {
>>>>>>> +						childWidth = hostWidth * ilc.percentWidth/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitWidth)) {
>>>>>>> +						childWidth = hostWidth;
>>>>>>> +					}
>>>>>>> +					ilc.setWidth(childWidth);
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setX(childXpos);
>>>>>>> +					ilc.setY(ypos);
>>>>>>> +
>>>>>>> +					if (!isNaN(ilc.percentHeight)) {
>>>>>>> +						ilc.setHeight(hostHeight * ilc.percentHeight / 100);
>>>>>>> +					}
>>>>>>> +
>>>>>>> +				} else {
>>>>>>> +					child.x = childXpos;
>>>>>>> +					child.y = ypos;
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				ypos += child.height + margins.bottom;
>>>>>>> +				adjustTop = ypos;
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			// then work from bottom to top
>>>>>>> +			ypos = hostHeight + borderMetrics.top + paddingMetrics.top;
>>>>>>> +
>>>>>>> +			for(i=(n-1); actualChild != null && i >= 0; i--)
>>>>>>> +			{
>>>>>>> +				child = contentView.getElementAt(i) as IUIBase;
>>>>>>> +				if (child == null || !child.visible) continue;
>>>>>>> +				if (child == actualChild) break;
>>>>>>> +
>>>>>>> +				margins = childMargins(child, hostWidth, hostHeight);
>>>>>>> +				ilc = child as ILayoutChild;
>>>>>>> +
>>>>>>> +				childXpos = xpos + margins.left; // default x position
>>>>>>> +
>>>>>>> +				childWidth = child.width;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentWidth)) {
>>>>>>> +						childWidth = hostWidth * ilc.percentWidth/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitWidth)) {
>>>>>>> +						childWidth = hostWidth;
>>>>>>> +					}
>>>>>>> +					ilc.setWidth(childWidth);
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					if (!isNaN(ilc.percentHeight)) {
>>>>>>> +						ilc.setHeight(hostHeight * ilc.percentHeight / 100);
>>>>>>> +					}
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				ypos -= child.height + margins.bottom;
>>>>>>> +
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setX(childXpos);
>>>>>>> +					ilc.setY(ypos);
>>>>>>> +				} else {
>>>>>>> +					child.x = childXpos;
>>>>>>> +					child.y = ypos;
>>>>>>> +				}
>>>>>>> +
>>>>>>> +				ypos -= margins.top;
>>>>>>> +				adjustBottom = ypos;
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			// now adjust the actualChild to fill the space.
>>>>>>> +			if (actualChild != null) {
>>>>>>> +				margins = childMargins(actualChild, hostWidth, hostHeight);
>>>>>>> +				ilc = actualChild as ILayoutChild;
>>>>>>> +				childWidth = actualChild.width;
>>>>>>> +				if (ilc != null)
>>>>>>> +				{
>>>>>>> +					if (!isNaN(ilc.percentWidth)) {
>>>>>>> +						childWidth = hostWidth * ilc.percentWidth/100.0;
>>>>>>> +					}
>>>>>>> +					else if (isNaN(ilc.explicitWidth)) {
>>>>>>> +						childWidth = hostWidth;
>>>>>>> +					}
>>>>>>> +					ilc.setWidth(childWidth);
>>>>>>> +				}
>>>>>>> +				childXpos = xpos + margins.left;
>>>>>>> +					
>>>>>>> +				actualChild.x = childXpos
>>>>>>> +				actualChild.y = adjustTop + margins.top;
>>>>>>> +				if (ilc) {
>>>>>>> +					ilc.setHeight((adjustBottom-margins.bottom) -
>>>>>>> (adjustTop+margins.top));
>>>>>>> +				} else {
>>>>>>> +					actualChild.height = (adjustBottom-margins.bottom) -
>>>>>>> (adjustTop+margins.top);
>>>>>>> +				}
>>>>>>> +			}
>>>>>>> +
>>>>>>> +			return true;
>>>>>>> +		}
>>>>>>> +
>>>>>>> +        public function setDocument(document:Object, id:String =
>>>>>>> null):void
>>>>>>> +        {
>>>>>>> +            this.document = document;
>>>>>>> +        }
>>>>>>> +    }
>>>>>>> +
>>>>>>> +}
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks
>>>>>>> %2
>>>>>>> Fp
>>>>>>> 
>>>>>>> 
>>>>>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbe
>>>>>>> ad
>>>>>>> s%
>>>>>>> 
>>>>>>> 
>>>>>>> 2Flayouts%2FOneFlexibleChildVerticalLayoutLockChildWidth.as&data=02%7
>>>>>>> C0
>>>>>>> 1%
>>>>>>> 
>>>>>>> 
>>>>>>> 7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dec
>>>>>>> ee
>>>>>>> 1%
>>>>>>> 
>>>>>>> 
>>>>>>> 7C0%7C0%7C636370058818766511&sdata=4Q4bkts0dp4wvvLUtu2yTYNg%2Fr7jS8bR
>>>>>>> t4
>>>>>>> co
>>>>>>> 3nYbPKc%3D&reserved=0
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> diff --git 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>>>>>> 
>>>>>>> 
>>>>>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>>>>>> deleted file mode 100644
>>>>>>> index 7415299..0000000
>>>>>>> --- 
>>>>>>> 
>>>>>>> 
>>>>>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/
>>>>>>> la
>>>>>>> yo
>>>>>>> uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>>>>>> +++ /dev/null
>>>>>>> @@ -1,93 +0,0 @@
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> -//
>>>>>>> -//  Licensed to the Apache Software Foundation (ASF) under one or 
>>>>>>> more
>>>>>>> -//  contributor license agreements.  See the NOTICE file 
>>>>>>> distributed
>>>>>>> with
>>>>>>> -//  this work for additional information regarding copyright 
>>>>>>> ownership.
>>>>>>> -//  The ASF licenses this file to You under the Apache License,
>>>>>>> Version 2.0
>>>>>>> -//  (the "License"); you may not use this file except in compliance
>>>>>>> with
>>>>>>> -//  the License.  You may obtain a copy of the License at
>>>>>>> -//
>>>>>>> -//      
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.a
>>>>>>> pa
>>>>>>> ch
>>>>>>> 
>>>>>>> 
>>>>>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae
>>>>>>> 08
>>>>>>> d4
>>>>>>> 
>>>>>>> 
>>>>>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766
>>>>>>> 51
>>>>>>> 1&
>>>>>>> sdata=bButr5xXaczhl741iZvjXub0l1B72d%2FvImajqD7mvyA%3D&reserved=0
>>>>>>> -//
>>>>>>> -//  Unless required by applicable law or agreed to in writing, 
>>>>>>> software
>>>>>>> -//  distributed under the License is distributed on an "AS IS" 
>>>>>>> BASIS,
>>>>>>> -//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
>>>>>>> or 
>>>>>>> implied.
>>>>>>> -//  See the License for the specific language governing 
>>>>>>> permissions 
>>>>>>> and
>>>>>>> -//  limitations under the License.
>>>>>>> -//
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -////////////////////////////////////////////////////////////////////
>>>>>>> //
>>>>>>> //
>>>>>>> ////////
>>>>>>> -package org.apache.flex.html.beads.layouts
>>>>>>> -{
>>>>>>> -	import org.apache.flex.core.LayoutBase;
>>>>>>> -	import org.apache.flex.core.IDocument;
>>>>>>> -	import org.apache.flex.core.ILayoutChild;
>>>>>>> -	import org.apache.flex.core.ILayoutHost;
>>>>>>> -	import org.apache.flex.core.ILayoutView;
>>>>>>> -	import org.apache.flex.core.ILayoutParent;
>>>>>>> -	import org.apache.flex.core.IParentIUIBase;
>>>>>>> -	import org.apache.flex.core.IStrand;
>>>>>>> -	import org.apache.flex.core.IStyleableObject;
>>>>>>> -	import org.apache.flex.core.IUIBase;
>>>>>>> -	import org.apache.flex.core.ValuesManager;
>>>>>>> -	import org.apache.flex.core.UIBase;
>>>>>>> -	import org.apache.flex.events.Event;
>>>>>>> -	import org.apache.flex.geom.Rectangle;
>>>>>>> -	import org.apache.flex.utils.CSSContainerUtils;
>>>>>>> -	import org.apache.flex.utils.CSSUtils;
>>>>>>> -
>>>>>>> -    /**
>>>>>>> -     *  The OneFlexibleChildHorizontalLayoutLockChildHeight 
>>>>>>> -	 *  is a subclass of OneFlexibleChildHorizontalLayout
>>>>>>> -	 *  that sets the flexible child's height to be the height
>>>>>>> -	 *  of the host container.  This is useful when you
>>>>>>> -	 *  don't want the actual child's height to dictate the
>>>>>>> -	 *  height of the container in order to force
>>>>>>> -	 *  scrollbars or line wrapping.
>>>>>>> -     *
>>>>>>> -     *  @langversion 3.0
>>>>>>> -     *  @playerversion Flash 10.2
>>>>>>> -     *  @playerversion AIR 2.6
>>>>>>> -     *  @productversion FlexJS 0.0
>>>>>>> -     */
>>>>>>> -	public class OneFlexibleChildVerticalLayoutLockChildWidth extends 
>>>>>>> OneFlexibleChildVerticalLayout
>>>>>>> -	{
>>>>>>> -        /**
>>>>>>> -         *  Constructor.
>>>>>>> -         *
>>>>>>> -         *  @langversion 3.0
>>>>>>> -         *  @playerversion Flash 10.2
>>>>>>> -         *  @playerversion AIR 2.6
>>>>>>> -         *  @productversion FlexJS 0.0
>>>>>>> -         */
>>>>>>> -		public function OneFlexibleChildVerticalLayoutLockChildWidth()
>>>>>>> -		{
>>>>>>> -			super();
>>>>>>> -		}
>>>>>>> -
>>>>>>> -        /**
>>>>>>> -         * @copy org.apache.flex.core.IBeadLayout#layout
>>>>>>> -         */
>>>>>>> -		override public function layout():Boolean
>>>>>>> -		{
>>>>>>> -			var ret:Boolean = super.layout();
>>>>>>> -			if (ret)
>>>>>>> -			{
>>>>>>> -				var contentView:ILayoutView = layoutView;
>>>>>>> -	
>>>>>>> -				var n:int = contentView.numElements;
>>>>>>> -
>>>>>>> -				var w:Number = host.width;
>>>>>>> -				for(var i:int=0; i < n; i++) {
>>>>>>> -					var child:UIBase = contentView.getElementAt(i) as UIBase;
>>>>>>> -					if (child != actualChild)
>>>>>>> -						w = child.width;
>>>>>>> -				}
>>>>>>> -				
>>>>>>> -				actualChild.setWidth(w); 
>>>>>>> -			}
>>>>>>> -			return ret;
>>>>>>> -		}
>>>>>>> -
>>>>>>> -    }
>>>>>>> -
>>>>>>> -}
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-w
>>>>>>> ip
>>>>>>> -u
>>>>>>> 
>>>>>>> 
>>>>>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks
>>>>>>> %2
>>>>>>> Fp
>>>>>>> 
>>>>>>> 
>>>>>>> rojects%2FBasic%2Fsrc%2Fmain%2Fresources%2Fbasic-manifest.xml&data=02
>>>>>>> %7
>>>>>>> C0
>>>>>>> 
>>>>>>> 
>>>>>>> 1%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178d
>>>>>>> ec
>>>>>>> ee
>>>>>>> 
>>>>>>> 
>>>>>>> 1%7C0%7C0%7C636370058818766511&sdata=mPldYCuDfp%2BxQ4QROdu4BWSl3Dh7HP
>>>>>>> 19
>>>>>>> VX
>>>>>>> BR3B3IXOg%3D&reserved=0
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> -
>>>>>>> diff --git 
>>>>>>> a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml 
>>>>>>> b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
>>>>>>> index 7cbc05d..09bb1a3 100644
>>>>>>> --- 
>>>>>>> a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
>>>>>>> +++ 
>>>>>>> b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
>>>>>>> @@ -150,8 +150,8 @@
>>>>>>>  <component id="FlexibleFirstChildHorizontalLayout" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.FlexibleFirstChildHorizonta
>>>>>>> lL
>>>>>>> ay
>>>>>>> out"/>
>>>>>>>  <component id="OneFlexibleChildVerticalLayout" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLay
>>>>>>> ou
>>>>>>> t"
>>>>>>> />
>>>>>>>  <component id="OneFlexibleChildHorizontalLayout" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalL
>>>>>>> ay
>>>>>>> ou
>>>>>>> t"/>
>>>>>>> -    <component id="OneFlexibleChildVerticalLayoutLockChildWidth" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLay
>>>>>>> ou
>>>>>>> tL
>>>>>>> ockChildWidth"/>
>>>>>>> -    <component 
>>>>>>> id="OneFlexibleChildHorizontalLayoutLockChildHeight" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalL
>>>>>>> ay
>>>>>>> ou
>>>>>>> tLockChildHeight"/>
>>>>>>> +    <component id="OneFlexibleChildVerticalLayoutForOverflow" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLay
>>>>>>> ou
>>>>>>> tF
>>>>>>> orOverflow"/>
>>>>>>> +    <component id="OneFlexibleChildHorizontalLayoutForOverflow" 
>>>>>>> 
>>>>>>> 
>>>>>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalL
>>>>>>> ay
>>>>>>> ou
>>>>>>> tForOverflow"/>
>>>>>>>  <component id="MXMLBeadView" 
>>>>>>> class="org.apache.flex.html.MXMLBeadView"/>
>>>>>>> 
>>>>>>>  <component id="SubAppLoader" 
>>>>>>> class="org.apache.flex.html.SubAppLoader" />
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>> 
>> 
> 


Mime
View raw message