This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit c3a3d4f7faf1e1f9a9f8105d27b86f05e5e7a446 Author: Alex Harui <aha...@apache.org> AuthorDate: Sat Mar 14 11:51:58 2020 -0700 Core,Basic,MXRoyale,SparkRoyale with beforeLayout returning a boolean so we can be smarter about skipping some layout passes --- .../src/main/royale/org/apache/royale/html/DividedContainer.as | 4 ++-- .../src/main/royale/org/apache/royale/html/beads/ContainerView.as | 4 +++- .../src/main/royale/org/apache/royale/html/beads/GroupView.as | 3 ++- .../org/apache/royale/html/supportClasses/MXMLItemRenderer.as | 4 ++-- .../Core/src/main/royale/org/apache/royale/core/ILayoutHost.as | 4 +++- .../Core/src/main/royale/org/apache/royale/core/LayoutBase.as | 8 +++++--- .../src/main/royale/spark/components/beads/GroupView.as | 3 ++- .../main/royale/spark/components/beads/SkinnableContainerView.as | 3 ++- .../src/main/royale/spark/components/beads/SparkContainerView.as | 3 ++- 9 files changed, 23 insertions(+), 13 deletions(-) diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DividedContainer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DividedContainer.as index 1faddc9..cd5b26d 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DividedContainer.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DividedContainer.as @@ -181,9 +181,9 @@ package org.apache.royale.html /** * @private */ - public function beforeLayout():void + public function beforeLayout():Boolean { - // does nothing + return true; } /** diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as index 0d242a6..4520587 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ContainerView.as @@ -209,7 +209,7 @@ package org.apache.royale.html.beads * @productversion Royale 0.8 * @royaleignorecoercion org.apache.royale.core.IBorderPaddingMarginValuesImpl */ - override public function beforeLayout():void + override public function beforeLayout():Boolean { var host:ILayoutChild = this.host as ILayoutChild; var vm:IViewportModel = viewportModel; @@ -246,6 +246,8 @@ package org.apache.royale.html.beads viewport.layoutViewportBeforeContentLayout( hostWidth - vm.borderMetrics.left - vm.borderMetrics.right, hostHeight - vm.borderMetrics.top - vm.borderMetrics.bottom); + + return true; } /** diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/GroupView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/GroupView.as index ea81695..1bb5ddb 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/GroupView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/GroupView.as @@ -202,9 +202,10 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.8 */ - public function beforeLayout():void + public function beforeLayout():Boolean { // This has no use for Group but is here so a subclass can override it. + return true; } /** diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MXMLItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MXMLItemRenderer.as index 5457159..ed1012d 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MXMLItemRenderer.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MXMLItemRenderer.as @@ -78,9 +78,9 @@ package org.apache.royale.html.supportClasses } } - public function beforeLayout():void + public function beforeLayout():Boolean { - + return true; } public function afterLayout():void diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ILayoutHost.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ILayoutHost.as index 37fe4e1..7e9161f 100644 --- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ILayoutHost.as +++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ILayoutHost.as @@ -43,13 +43,15 @@ package org.apache.royale.core /** * Invoked prior to performing the layout. + * + * @returns false if it isn't worth laying out * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 * @productversion Royale 0.8 */ - function beforeLayout():void; + function beforeLayout():Boolean; /** * Invoked after performing the layout. diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as index aab9889..64b100f 100644 --- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as +++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/LayoutBase.as @@ -327,9 +327,11 @@ package org.apache.royale.core var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); - viewBead.beforeLayout(); - if (layout()) { - viewBead.afterLayout(); + if (viewBead.beforeLayout()) + { + if (layout()) { + viewBead.afterLayout(); + } } isLayoutRunning = false; diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/GroupView.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/GroupView.as index 89f221e..a1186e7 100644 --- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/GroupView.as +++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/GroupView.as @@ -65,7 +65,7 @@ public class GroupView extends org.apache.royale.html.beads.GroupView * @productversion Royale 0.0 * @royaleignorecoercion org.apache.royale.core.UIBase */ - override public function beforeLayout():void + override public function beforeLayout():Boolean { var host:GroupBase = _strand as GroupBase; // some Groups have left/right but are still sized to content. @@ -75,6 +75,7 @@ public class GroupView extends org.apache.royale.html.beads.GroupView { host.layout.measure(); } + return true; } /** diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableContainerView.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableContainerView.as index 668e84c..eb369b7 100644 --- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableContainerView.as +++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SkinnableContainerView.as @@ -80,7 +80,7 @@ public class SkinnableContainerView extends SparkContainerView * @productversion Royale 0.0 * @royaleignorecoercion org.apache.royale.core.UIBase */ - override public function beforeLayout():void + override public function beforeLayout():Boolean { var host:SkinnableContainer = _strand as SkinnableContainer; if (host.isWidthSizedToContent() || host.isHeightSizedToContent()) @@ -110,6 +110,7 @@ public class SkinnableContainerView extends SparkContainerView } } + return true; } override protected function addViewport():void diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkContainerView.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkContainerView.as index 8088af0..3923423 100644 --- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkContainerView.as +++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/SparkContainerView.as @@ -91,13 +91,14 @@ public class SparkContainerView extends ContainerView * @productversion Royale 0.0 * @royaleignorecoercion org.apache.royale.core.UIBase */ - override public function beforeLayout():void + override public function beforeLayout():Boolean { var host:SkinnableContainer = _strand as SkinnableContainer; if (host.isWidthSizedToContent() || host.isHeightSizedToContent()) { host.layout.measure(); } + return true; } /**