You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2020/03/15 17:20:21 UTC

[royale-asjs] 03/04: Core, Basic, MXRoyale, SparkRoyale with beforeLayout returning a boolean so we can be smarter about skipping some layout passes

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