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 will d

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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 will d

Harbs
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://codepen.io/jpdevries/pen/oXxPOP <https://codepen.io/jpdevries/pen/oXxPOP>

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, [hidden email] 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: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/bdd34d2e
> Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/bdd34d2e
> Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/bdd34d2e
>
> Branch: refs/heads/release0.8.0
> Commit: bdd34d2ef4d8117fa1b222ac470482a42dbea9eb
> Parents: c505d67
> Author: Alex Harui <[hidden email]>
> Authored: Mon May 22 10:12:02 2017 -0700
> Committer: Alex Harui <[hidden email]>
> 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(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdd34d2e/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as
> new file mode 100644
> index 0000000..c6abc22
> --- /dev/null
> +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/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
> +//
> +//      http://www.apache.org/licenses/LICENSE-2.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;
> +        }
> +
> +    }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdd34d2e/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutLockChildHeight.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
> deleted file mode 100644
> index d170d23..0000000
> --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/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
> -//
> -//      http://www.apache.org/licenses/LICENSE-2.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;
> - }
> -
> -    }
> -
> -}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdd34d2e/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as
> new file mode 100644
> index 0000000..5679f80
> --- /dev/null
> +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/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
> +//
> +//      http://www.apache.org/licenses/LICENSE-2.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;
> +        }
> +    }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdd34d2e/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutLockChildWidth.as
> ----------------------------------------------------------------------
> diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutLockChildWidth.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutLockChildWidth.as
> deleted file mode 100644
> index 7415299..0000000
> --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/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
> -//
> -//      http://www.apache.org/licenses/LICENSE-2.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;
> - }
> -
> -    }
> -
> -}
>
> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bdd34d2e/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
> ----------------------------------------------------------------------
> 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.FlexibleFirstChildHorizontalLayout"/>
>     <component id="OneFlexibleChildVerticalLayout" class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayout"/>
>     <component id="OneFlexibleChildHorizontalLayout" class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayout"/>
> -    <component id="OneFlexibleChildVerticalLayoutLockChildWidth" class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutLockChildWidth"/>
> -    <component id="OneFlexibleChildHorizontalLayoutLockChildHeight" class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayoutLockChildHeight"/>
> +    <component id="OneFlexibleChildVerticalLayoutForOverflow" class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutForOverflow"/>
> +    <component id="OneFlexibleChildHorizontalLayoutForOverflow" class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayoutForOverflow"/>
>     <component id="MXMLBeadView" class="org.apache.flex.html.MXMLBeadView"/>
>
>     <component id="SubAppLoader" class="org.apache.flex.html.SubAppLoader" />
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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 will d

yishayw
Here's a test app [1] that demonstrates it.

[1] https://paste.apache.org/i5Ui
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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...

Alex Harui-2
In reply to this post by Harbs
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" <[hidden email]> 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%2Fcodepen.i
>o%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d73
>2638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sdat
>a=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0
><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcodepen.
>io%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d7
>32638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sda
>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, [hidden email] 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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C699bbb170
>>b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363
>>70058818766511&sdata=P%2FMkfZAwCYwpQEoCe5UGx8tW0mZaIZsMdDg6VxlaKWA%3D&res
>>erved=0
>> Commit:
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2Fbdd34d2e&data=02%7C01%7
>>C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>C0%7C0%7C636370058818766511&sdata=QosBAau8lE4nCS7c%2F8B6GDc%2Bqa%2BpSkoP5
>>5x3oji5FnI%3D&reserved=0
>> Tree:
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2Fbdd34d2e&data=02%7C01%7C%
>>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636370058818766511&sdata=T4CCqwtn%2FgFTmAnaI%2BuCXqtX0P75ebpKVZOxf
>>XOTbIE%3D&reserved=0
>> Diff:
>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2Fbdd34d2e&data=02%7C01%7C%
>>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636370058818766511&sdata=f8WVJXc81KrLMuUgRckULYCfglNL7d%2BfdjSbBBU
>>0fRo%3D&reserved=0
>>
>> Branch: refs/heads/release0.8.0
>> Commit: bdd34d2ef4d8117fa1b222ac470482a42dbea9eb
>> Parents: c505d67
>> Author: Alex Harui <[hidden email]>
>> Authored: Mon May 22 10:12:02 2017 -0700
>> Committer: Alex Harui <[hidden email]>
>> 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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>2Flayouts%2FOneFlexibleChildHorizontalLayoutForOverflow.as&data=02%7C01%7
>>C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>C0%7C0%7C636370058818766511&sdata=L7BjG%2BM7nTwguX%2BNaE5Op6BIT7XZrEqKFop
>>0D%2Frc0Aw%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>> new file mode 100644
>> index 0000000..c6abc22
>> --- /dev/null
>> +++
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>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.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>2Flayouts%2FOneFlexibleChildHorizontalLayoutLockChildHeight.as&data=02%7C
>>01%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dece
>>e1%7C0%7C0%7C636370058818766511&sdata=Ir1Siye21IUzzijpvWA1XmQN0AbHktLu%2F
>>u3h%2BRtBZT0%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>> deleted file mode 100644
>> index d170d23..0000000
>> ---
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>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.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>2Flayouts%2FOneFlexibleChildVerticalLayoutForOverflow.as&data=02%7C01%7C%
>>7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>%7C0%7C636370058818766511&sdata=WdJnx6IGbPwIxUibKB3UqfKTHgHugWIleqBVsqJ5f
>>eE%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildVerticalLayoutForOverflow.as
>> new file mode 100644
>> index 0000000..5679f80
>> --- /dev/null
>> +++
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>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.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>2Flayouts%2FOneFlexibleChildVerticalLayoutLockChildWidth.as&data=02%7C01%
>>7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%
>>7C0%7C0%7C636370058818766511&sdata=4Q4bkts0dp4wvvLUtu2yTYNg%2Fr7jS8bRt4co
>>3nYbPKc%3D&reserved=0
>> ----------------------------------------------------------------------
>> diff --git
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>> deleted file mode 100644
>> index 7415299..0000000
>> ---
>>a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>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.apach
>>e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>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-wip-u
>>s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>rojects%2FBasic%2Fsrc%2Fmain%2Fresources%2Fbasic-manifest.xml&data=02%7C0
>>1%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee
>>1%7C0%7C0%7C636370058818766511&sdata=mPldYCuDfp%2BxQ4QROdu4BWSl3Dh7HP19VX
>>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.FlexibleFirstChildHorizontalLay
>>out"/>
>>     <component id="OneFlexibleChildVerticalLayout"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayout"
>>/>
>>     <component id="OneFlexibleChildHorizontalLayout"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>t"/>
>> -    <component id="OneFlexibleChildVerticalLayoutLockChildWidth"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutL
>>ockChildWidth"/>
>> -    <component id="OneFlexibleChildHorizontalLayoutLockChildHeight"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>tLockChildHeight"/>
>> +    <component id="OneFlexibleChildVerticalLayoutForOverflow"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutF
>>orOverflow"/>
>> +    <component id="OneFlexibleChildHorizontalLayoutForOverflow"
>>class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>tForOverflow"/>
>>     <component id="MXMLBeadView"
>>class="org.apache.flex.html.MXMLBeadView"/>
>>
>>     <component id="SubAppLoader"
>>class="org.apache.flex.html.SubAppLoader" />
>>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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...

Harbs
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 <[hidden email]> 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" <[hidden email]> 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%2Fcodepen.i
>> o%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d73
>> 2638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sdat
>> a=tSTNYANFFiQ4DMGYbAZaz0dJ9qYDYpcwP2ZoSYRIcG8%3D&reserved=0
>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcodepen.
>> io%2Fjpdevries%2Fpen%2FoXxPOP&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4d7
>> 32638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&sda
>> 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, [hidden email] 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Frepo&data=02%7C01%7C%7C699bbb170
>>> b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6363
>>> 70058818766511&sdata=P%2FMkfZAwCYwpQEoCe5UGx8tW0mZaIZsMdDg6VxlaKWA%3D&res
>>> erved=0
>>> Commit:
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fcommit%2Fbdd34d2e&data=02%7C01%7
>>> C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>> C0%7C0%7C636370058818766511&sdata=QosBAau8lE4nCS7c%2F8B6GDc%2Bqa%2BpSkoP5
>>> 5x3oji5FnI%3D&reserved=0
>>> Tree:
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Ftree%2Fbdd34d2e&data=02%7C01%7C%
>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636370058818766511&sdata=T4CCqwtn%2FgFTmAnaI%2BuCXqtX0P75ebpKVZOxf
>>> XOTbIE%3D&reserved=0
>>> Diff:
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fdiff%2Fbdd34d2e&data=02%7C01%7C%
>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636370058818766511&sdata=f8WVJXc81KrLMuUgRckULYCfglNL7d%2BfdjSbBBU
>>> 0fRo%3D&reserved=0
>>>
>>> Branch: refs/heads/release0.8.0
>>> Commit: bdd34d2ef4d8117fa1b222ac470482a42dbea9eb
>>> Parents: c505d67
>>> Author: Alex Harui <[hidden email]>
>>> Authored: Mon May 22 10:12:02 2017 -0700
>>> Committer: Alex Harui <[hidden email]>
>>> 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>> 2Flayouts%2FOneFlexibleChildHorizontalLayoutForOverflow.as&data=02%7C01%7
>>> C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>> C0%7C0%7C636370058818766511&sdata=L7BjG%2BM7nTwguX%2BNaE5Op6BIT7XZrEqKFop
>>> 0D%2Frc0Aw%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildHorizontalLayoutForOverflow.as
>>> new file mode 100644
>>> index 0000000..c6abc22
>>> --- /dev/null
>>> +++
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> 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.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>> 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>> 2Flayouts%2FOneFlexibleChildHorizontalLayoutLockChildHeight.as&data=02%7C
>>> 01%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178dece
>>> e1%7C0%7C0%7C636370058818766511&sdata=Ir1Siye21IUzzijpvWA1XmQN0AbHktLu%2F
>>> u3h%2BRtBZT0%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildHorizontalLayoutLockChildHeight.as
>>> deleted file mode 100644
>>> index d170d23..0000000
>>> ---
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> 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.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>> 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>> 2Flayouts%2FOneFlexibleChildVerticalLayoutForOverflow.as&data=02%7C01%7C%
>>> 7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0
>>> %7C0%7C636370058818766511&sdata=WdJnx6IGbPwIxUibKB3UqfKTHgHugWIleqBVsqJ5f
>>> eE%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildVerticalLayoutForOverflow.as
>>> new file mode 100644
>>> index 0000000..5679f80
>>> --- /dev/null
>>> +++
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> 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.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>> 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>> rojects%2FBasic%2Fsrc%2Fmain%2Fflex%2Forg%2Fapache%2Fflex%2Fhtml%2Fbeads%
>>> 2Flayouts%2FOneFlexibleChildVerticalLayoutLockChildWidth.as&data=02%7C01%
>>> 7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%
>>> 7C0%7C0%7C636370058818766511&sdata=4Q4bkts0dp4wvvLUtu2yTYNg%2Fr7jS8bRt4co
>>> 3nYbPKc%3D&reserved=0
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>> b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> uts/OneFlexibleChildVerticalLayoutLockChildWidth.as
>>> deleted file mode 100644
>>> index 7415299..0000000
>>> ---
>>> a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layo
>>> 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.apach
>>> e.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C%7C699bbb170b2c4f0bf3ae08d4
>>> d732638a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636370058818766511&
>>> 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-wip-u
>>> s.apache.org%2Frepos%2Fasf%2Fflex-asjs%2Fblob%2Fbdd34d2e%2Fframeworks%2Fp
>>> rojects%2FBasic%2Fsrc%2Fmain%2Fresources%2Fbasic-manifest.xml&data=02%7C0
>>> 1%7C%7C699bbb170b2c4f0bf3ae08d4d732638a%7Cfa7b1b5a7b34438794aed2c178decee
>>> 1%7C0%7C0%7C636370058818766511&sdata=mPldYCuDfp%2BxQ4QROdu4BWSl3Dh7HP19VX
>>> 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.FlexibleFirstChildHorizontalLay
>>> out"/>
>>>    <component id="OneFlexibleChildVerticalLayout"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayout"
>>> />
>>>    <component id="OneFlexibleChildHorizontalLayout"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>> t"/>
>>> -    <component id="OneFlexibleChildVerticalLayoutLockChildWidth"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutL
>>> ockChildWidth"/>
>>> -    <component id="OneFlexibleChildHorizontalLayoutLockChildHeight"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>> tLockChildHeight"/>
>>> +    <component id="OneFlexibleChildVerticalLayoutForOverflow"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutF
>>> orOverflow"/>
>>> +    <component id="OneFlexibleChildHorizontalLayoutForOverflow"
>>> class="org.apache.flex.html.beads.layouts.OneFlexibleChildHorizontalLayou
>>> tForOverflow"/>
>>>    <component id="MXMLBeadView"
>>> class="org.apache.flex.html.MXMLBeadView"/>
>>>
>>>    <component id="SubAppLoader"
>>> class="org.apache.flex.html.SubAppLoader" />
>>>
>>
>


Loading...