You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2022/01/02 10:25:55 UTC

[royale-asjs] branch develop updated: Added needsView and needsController optimization

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


The following commit(s) were added to refs/heads/develop by this push:
     new ac1610b  Added needsView and needsController optimization
ac1610b is described below

commit ac1610b3c90e5565af39825078c59df9528b7c7d
Author: Harbs <ha...@in-tools.com>
AuthorDate: Sun Jan 2 12:25:44 2022 +0200

    Added needsView and needsController optimization
---
 .../main/royale/org/apache/royale/core/UIBase.as   | 29 +++++++++++++++++++---
 .../org/apache/royale/html/NodeElementBase.as      | 10 ++++++++
 .../org/apache/royale/svg/elements/SVGBase.as      |  9 ++++++-
 3 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
index 6420b82..6d75c86 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
@@ -1391,9 +1391,32 @@ package org.apache.royale.core
          */
         protected function loadBeads():void
         {
-            _view = loadBeadFromValuesManager(IBeadView, "iBeadView", this) as IBeadView;
-			loadBeadFromValuesManager(IBeadController, "iBeadController", this);
-            sendEvent(this,"viewChanged");
+            if(needsView())
+            {
+                _view = loadBeadFromValuesManager(IBeadView, "iBeadView", this) as IBeadView;
+                sendEvent(this,"viewChanged");
+            }
+            
+            if(needsController())
+                loadBeadFromValuesManager(IBeadController, "iBeadController", this);
+            
+        }
+        /**
+         * Subclasses can override this method to declare whether they need a view.
+         * Components which do not need a view can avoid searching for view beads
+         */
+        protected function needsView():Boolean
+        {
+            return true;
+        }
+
+        /**
+         * Subclasses can override this method to declare whether they need a controller.
+         * Components which do not need a controller can avoid searching for controller beads
+         */
+        protected function needsController():Boolean
+        {
+            return true;
         }
 
         private var _measurementBead:IMeasurementBead;
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 20e8520..2f98dfb 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
@@ -28,6 +28,16 @@ package org.apache.royale.html
 			typeNames = "";
 		}
 
+		override protected function needsView():Boolean
+		{
+			return false;
+		}
+
+		override protected function needsController():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 2a2df6a..5093114 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
@@ -26,7 +26,14 @@ package org.apache.royale.svg.elements
     {
       super();
     }
-
+    override protected function needsView():Boolean
+    {
+      return false;
+    }
+    override protected function needsController():Boolean
+    {
+      return false;
+    }
     override public function get x():Number{
       return Number(element.getAttribute("x"));
     }