This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 628be8bad8da997190b8a57b0040b9ed8026d963
Author: Harbs <[email protected]>
AuthorDate: Sun Jan 2 12:52:05 2022 +0200

    added needsLayout optimization
---
 .../royale/org/apache/royale/core/GroupBase.as     | 12 ++++++++-
 .../royale/org/apache/royale/html/ControlBar.as    | 29 ++++++++++------------
 .../main/royale/org/apache/royale/html/TitleBar.as | 13 ----------
 .../apache/royale/html/beads/DataContainerView.as  | 10 --------
 .../org/apache/royale/html/beads/SliderView.as     |  8 ++----
 .../org/apache/royale/html/beads/TreeGridView.as   | 15 +++--------
 .../org/apache/royale/html/NodeElementBase.as      |  5 ++++
 .../org/apache/royale/svg/elements/SVGBase.as      |  4 +++
 8 files changed, 39 insertions(+), 57 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
index 5c91d86..a00f2b9 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
@@ -109,8 +109,18 @@ package org.apache.royale.core
                        super.addedToParent();
                        
                        // Load the layout bead if it hasn't already been 
loaded.
-                       loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", 
this);
+            if(needsLayout())
+                loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this);
                }
+
+        /**
+         * Subclasses can override this method to declare whether they need a 
layout.
+         * Components which do not need a layout can avoid searching for 
layout beads
+         */
+        protected function needsLayout():Boolean
+        {
+            return true;
+        }
                
                /*
                 * IContainer
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as
index c877f0c..2f74897 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as
@@ -19,15 +19,12 @@
 package org.apache.royale.html
 {
 
-       import org.apache.royale.core.IBeadLayout;
        import org.apache.royale.core.IChrome;
-       import org.apache.royale.core.ValuesManager;
-       import org.apache.royale.utils.loadBeadFromValuesManager;
-    COMPILE::JS
-    {
-        import org.apache.royale.core.WrappedHTMLElement;
+       COMPILE::JS
+       {
+               import org.apache.royale.core.WrappedHTMLElement;
                import org.apache.royale.html.util.addElementToWrapper;
-    }
+       }
 
        /**
         *  The ControlBar class is used within a Panel as a place to position
@@ -43,7 +40,7 @@ package org.apache.royale.html
         *  org.apache.royale.html.beads.IBorderBead: if present, displays a 
border around the component.
         *  org.apache.royale.html.beads.IBackgroundBead: if present, displays 
a solid background below the ControlBar.
         *
-     *  @toplevel
+        *  @toplevel
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
@@ -66,17 +63,17 @@ package org.apache.royale.html
                        typeNames = "ControlBar";
                }
 
-        /**
-         * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
-         */
-        COMPILE::JS
-        override protected function createElement():WrappedHTMLElement
-        {
+               /**
+                * @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
+                */
+               COMPILE::JS
+               override protected function createElement():WrappedHTMLElement
+               {
                        addElementToWrapper(this,'div');
                        typeNames = "ControlBar";
 
-            return element;
-        }
+                       return element;
+               }
 
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as
index 0b8c457..2f34ff1 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as
@@ -18,12 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html
 {
-       import org.apache.royale.core.IBead;
-       import org.apache.royale.core.IBeadLayout;
        import org.apache.royale.core.IChrome;
        import org.apache.royale.core.ITitleBarModel;
-       import org.apache.royale.core.ValuesManager;
-       import org.apache.royale.utils.loadBeadFromValuesManager;
     COMPILE::JS
     {
         import org.apache.royale.core.WrappedHTMLElement;
@@ -128,15 +124,6 @@ package org.apache.royale.html
                        ITitleBarModel(model).showCloseButton = value;
                }
                
-               /**
-                * @private
-                */
-               override public function addedToParent():void
-               {
-                       super.addedToParent();
-                       loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", 
this);
-               }
-        
         /**
          * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
          */
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
index 0f3e4ea..b015741 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
@@ -18,10 +18,6 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.beads
 {      
-       import org.apache.royale.core.IBead;
-       import org.apache.royale.core.IBeadLayout;
-       import org.apache.royale.core.IBeadModel;
-       import org.apache.royale.core.IBeadView;
     import org.apache.royale.core.IChild;
        import org.apache.royale.core.IDataProviderItemRendererMapper;
        import org.apache.royale.core.IDataProviderModel;
@@ -31,15 +27,9 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IParent;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IUIBase;
-       import org.apache.royale.core.Strand;
-       import org.apache.royale.core.UIBase;
-       import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.Event;
-       import org.apache.royale.events.IEventDispatcher;
     import org.apache.royale.events.ItemAddedEvent;
     import org.apache.royale.events.ItemRemovedEvent;
-       import org.apache.royale.html.supportClasses.Border;
-       import org.apache.royale.html.supportClasses.DataGroup;
        import org.apache.royale.html.beads.IListView;
        import org.apache.royale.events.Event;
        import org.apache.royale.html.supportClasses.DataItemRenderer;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
index 99e5b3d..17eb60b 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
@@ -39,6 +39,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.html.Button;
     import org.apache.royale.html.TextButton;
     import org.apache.royale.utils.sendStrandEvent;
+    import org.apache.royale.utils.loadBeadFromValuesManager;
        
        /**
         *  The SliderView class creates the visual elements of the 
org.apache.royale.html.Slider 
@@ -81,12 +82,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        super.strand = value;
-                       
-                       var layout:IBeadLayout = 
_strand.getBeadByType(IBeadLayout) as IBeadLayout;
-                       if (layout == null) {
-                               var klass:Class = 
ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout");
-                               _strand.addBead(new klass() as IBead);
-                       }
+                       
loadBeadFromValuesManager(IBeadLayout,"iBeadLayout",_strand);
                        
                        COMPILE::SWF {
                                var s:UIBase = UIBase(_strand);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
index ac5d1a6..781e735 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
@@ -45,6 +45,7 @@ package org.apache.royale.html.beads
        import 
org.apache.royale.html.beads.models.SingleSelectionCollectionViewModel;
        import org.apache.royale.html.supportClasses.IDataGridColumn;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.utils.loadBeadFromValuesManager;
        
        /**
         * The TreeGridView class is responsible for creating the 
sub-components of the TreeGrid:
@@ -117,17 +118,9 @@ package org.apache.royale.html.beads
                {
                        super.strand = value;
                        _strand = value;
-                       
-                       var layout:IBeadLayout = 
_strand.getBeadByType(TreeGridLayout) as IBeadLayout;
-                       if (layout == null) {
-                               var layoutClass:Class = 
ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout") as Class;
-                               if (layoutClass != null) {
-                                       layout = new layoutClass() as 
IBeadLayout;
-                               } else {
-                                       layout = new TreeGridLayout(); // 
default
-                               }
-                               _strand.addBead(layout);
-                       }
+                       var layout:IBeadLayout = 
loadBeadFromValuesManager(IBeadLayout,"iBeadLayout",_strand) as IBeadLayout;
+                       if(!layout)
+                               _strand.addBead(new TreeGridLayout()); // 
default
 
                        listenOnStrand("beadsAdded", finishSetup);
                }
diff --git 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
index 2f98dfb..8d4298f 100644
--- 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
+++ 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
@@ -38,6 +38,11 @@ package org.apache.royale.html
                        return false;
                }
 
+               override protected function needsLayout():Boolean
+               {
+                       return false;
+               }
+
                COMPILE::SWF
                {
                        private var _nodeValue:String;
diff --git 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
index 5093114..e7888e0 100644
--- 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
+++ 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
@@ -34,6 +34,10 @@ package org.apache.royale.svg.elements
     {
       return false;
     }
+    override protected function needsLayout():Boolean
+    {
+      return false;
+    }
     override public function get x():Number{
       return Number(element.getAttribute("x"));
     }

Reply via email to