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;
     }
     
     /**

Reply via email to