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/10/11 07:58:07 UTC

[royale-asjs] branch develop updated: This should make timer handling more robust

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 b28c704dc6 This should make timer handling more robust
b28c704dc6 is described below

commit b28c704dc68c83cbc144b6b31d69a227e4b88e5c
Author: Harbs <ha...@in-tools.com>
AuthorDate: Tue Oct 11 10:57:58 2022 +0300

    This should make timer handling more robust
---
 .../beads/controllers/SpinnerMouseController.as    | 38 ++++++++++------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SpinnerMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SpinnerMouseController.as
index 1ef88f4cac..0f508b6400 100755
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SpinnerMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SpinnerMouseController.as
@@ -79,17 +79,17 @@ package org.apache.royale.jewel.beads.controllers
 
 			rangeModel = UIBase(value).model as IRangeModel;
 
-            COMPILE::SWF
-            {
+			COMPILE::SWF
+			{
 			var spinnerBead:ISpinnerView = value.getBeadByType(ISpinnerView) as ISpinnerView;
 			spinnerBead.decrement.addEventListener(MouseEvent.CLICK, decrementClickHandler);
 			spinnerBead.decrement.addEventListener("buttonRepeat", decrementClickHandler);
 			spinnerBead.increment.addEventListener(MouseEvent.CLICK, incrementClickHandler);
 			spinnerBead.increment.addEventListener("buttonRepeat", incrementClickHandler);
-            }
+			}
 
-            COMPILE::JS
-            {
+			COMPILE::JS
+			{
 			var view:ISpinnerView = value.getBeadByType(ISpinnerView) as ISpinnerView;
 
 			var incrementButton:Button = view.increment;
@@ -103,7 +103,7 @@ package org.apache.royale.jewel.beads.controllers
 			decrementButton.addEventListener(MouseEvent.MOUSE_DOWN, decrementMouseDownHandler);
 			decrementButton.addEventListener(MouseEvent.MOUSE_UP, decrementMouseUpHandlermouseUpHandler);
 			decrementButton.addEventListener(MouseEvent.MOUSE_OUT, cancelTimerMouseOutHandler);
-            }
+			}
 		}
 
 		private var mouseDown:Boolean = false;
@@ -123,18 +123,20 @@ package org.apache.royale.jewel.beads.controllers
 				if (timer.delay > 150)
 				{
 					var newdelay:Number = timer.delay/2;
-					removeTimer(incOrDecFunc);
 					createTimer(incOrDecFunc, newdelay)
 				}
 			}
 		}
 
+		private var currentFunc:Function;
 		/**
 		 * Create the timer each time needed depending on function to listen and delay
 		 * @private
 		 */
 		private function createTimer(incOrDecFunc:Function, delay:Number):void
 		{
+			removeTimer();
+			currentFunc = incOrDecFunc;
 			timer = new Timer(delay, 0);
 			timer.addEventListener("timer", incOrDecFunc);
 			timer.start();
@@ -144,9 +146,12 @@ package org.apache.royale.jewel.beads.controllers
 		 * Remove the timer each time needed depending on function to listen
 		 * @private
 		 */
-		private function removeTimer(incOrDecFunc:Function):void
+		private function removeTimer():void
 		{
-			timer.removeEventListener("timer", incOrDecFunc);
+			if(!timer || !currentFunc)
+				return;
+			
+			timer.removeEventListener("timer", currentFunc);
 			timer.stop();
 			timer = null;
 		}
@@ -156,16 +161,7 @@ package org.apache.royale.jewel.beads.controllers
 		 */
 		private function cancelTimerMouseOutHandler(event:MouseEvent):void
 		{
-			if (timer != null && timer.running)
-			{
-				//TODO removeAllListeners should probably not be used as it's a goog construct
-				COMPILE::JS
-				{
-					timer.removeAllListeners();
-				}
-				timer.stop();
-				timer = null;
-			}
+			removeTimer();
 		}
 
 		/**
@@ -192,7 +188,7 @@ package org.apache.royale.jewel.beads.controllers
 				return;
 			}
 			mouseDown = false;
-			removeTimer(incrementClickHandler);
+			removeTimer();
 		}
 		/**
 		 * Increment mouse click handler
@@ -231,7 +227,7 @@ package org.apache.royale.jewel.beads.controllers
 				return;
 			}
 			mouseDown = false;
-			removeTimer(decrementClickHandler);
+			removeTimer();
 		}
 		/**
 		 * Decrement mouse click handler