You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/05/24 17:49:27 UTC

[royale-asjs] branch develop updated: Make mx comboboxes hide on mousedownout

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

yishayw 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 426a93e  Make mx comboboxes hide on mousedownout
426a93e is described below

commit 426a93e68d6ebe356df21e7b68bb7c60cdf539f3
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Sun May 24 20:49:17 2020 +0300

    Make mx comboboxes hide on mousedownout
---
 .../html/beads/HideComboPopupOnMouseDownBead.as    |  2 +-
 .../src/main/royale/mx/controls/ComboBox.as        |  2 +
 .../beads/HideComboPopupOnMouseDownBead.as         | 70 +++-------------------
 3 files changed, 11 insertions(+), 63 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as
index 27464c8..65afdab 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as
@@ -44,7 +44,7 @@ package org.apache.royale.html.beads
 		{
 		}
 		
-		private var _strand:IStrand;
+		protected var _strand:IStrand;
 		
 		protected var viewBead:IComboBoxView;
 		
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBox.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBox.as
index 6c4225f..5f99a22 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBox.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBox.as
@@ -19,6 +19,7 @@
 
 package mx.controls
 {
+import mx.controls.beads.HideComboPopupOnMouseDownBead;
 import mx.controls.dataGridClasses.DataGridListData;
 import mx.controls.listClasses.BaseListData;
 //import mx.controls.listClasses.ListData;
@@ -659,6 +660,7 @@ public class ComboBox extends ComboBase
         super();
         if((model as ISelectionModel).labelField == null) 
 			labelField =  "label";
+        addBead(new HideComboPopupOnMouseDownBead());
 
         // It it better to start out with an empty data provider rather than
         // an undefined one. Otherwise, code in getDropdown() sets it to []
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/HideComboPopupOnMouseDownBead.as
similarity index 51%
copy from frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as
copy to frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/HideComboPopupOnMouseDownBead.as
index 27464c8..c3aa009 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/HideComboPopupOnMouseDownBead.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/HideComboPopupOnMouseDownBead.as
@@ -16,17 +16,14 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.html.beads
+package mx.controls.beads
 {
 	import org.apache.royale.utils.callLater;
-	import org.apache.royale.utils.loadBeadFromValuesManager;
-    import org.apache.royale.core.IBead;
-	import org.apache.royale.core.IStrand;
-	import org.apache.royale.core.IUIBase;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.MouseEvent;
-	import org.apache.royale.html.beads.IComboBoxView;
+	import mx.core.FlexGlobals;
+	import org.apache.royale.html.beads.HideComboPopupOnMouseDownBead;
 	
 	/**
 	 *  The HideComboPopupOnMouseDownBead can be used with ComboBox to make sure mouse down events
@@ -38,81 +35,30 @@ package org.apache.royale.html.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 9.3
 	 */
-	public class HideComboPopupOnMouseDownBead implements IBead
+	public class HideComboPopupOnMouseDownBead extends org.apache.royale.html.beads.HideComboPopupOnMouseDownBead
 	{
-		public function HideComboPopupOnMouseDownBead()
-		{
-		}
-		
-		private var _strand:IStrand;
-		
-		protected var viewBead:IComboBoxView;
-		
-		/**
-		 *  @copy org.apache.royale.core.IBead#strand
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
-		 *  @royaleignorecoercion org.apache.royale.html.beads.IComboBoxView
-		 *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-		 */
-		public function set strand(value:IStrand):void
-		{
-			_strand = value;
-			viewBead = _strand.getBeadByType(IComboBoxView) as IComboBoxView;
-			if (viewBead) {
-				finishSetup(null);
-			} else {
-				IEventDispatcher(_strand).addEventListener("viewChanged", finishSetup);
-			}
-		}
-		/**
-		 * @royaleignorecoercion org.apache.royale.html.beads.IComboBoxView
-		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-		 */
-		protected function finishSetup(event:Event):void
-		{
-			if (viewBead == null) {
-				viewBead = loadBeadFromValuesManager(IComboBoxView, "iBeadView", _strand) as IComboBoxView;
-			}
-			IEventDispatcher(viewBead.popUp).addEventListener("show", handlePopupShow);
-			IEventDispatcher(viewBead.popUp).addEventListener("hide", handlePopupHide);
-		}
-		
-		protected function handleControlMouseDown(event:MouseEvent):void
-		{			
-			event.stopImmediatePropagation();
-		}
-		
 		/**
 		 * @royaleignorecoercion org.apache.royale.core.IUIBase
 		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
 		 */
-		protected function handlePopupShow(event:Event):void
+		override protected function handlePopupShow(event:Event):void
 		{
 			IEventDispatcher(viewBead.popUp).addEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 			IEventDispatcher(_strand).addEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 			callLater(function():void {
-				IUIBase(viewBead.popUp).topMostEventDispatcher.addEventListener(MouseEvent.MOUSE_DOWN, handleTopMostEventDispatcherMouseDown);
+				(FlexGlobals.topLevelApplication as IEventDispatcher).addEventListener(MouseEvent.MOUSE_DOWN, handleTopMostEventDispatcherMouseDown);
 			});
 		}
 		
-		protected function handleTopMostEventDispatcherMouseDown(event:MouseEvent):void
-		{
-			viewBead.popUpVisible = false;
-		}
-		
 		/**
 		 * @royaleignorecoercion org.apache.royale.core.IUIBase
 		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
 		 */
-		protected function handlePopupHide(event:Event):void
+		override protected function handlePopupHide(event:Event):void
 		{
 			IEventDispatcher(viewBead.popUp).removeEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
 			IEventDispatcher(_strand).removeEventListener(MouseEvent.MOUSE_DOWN, handleControlMouseDown);
-			IUIBase(viewBead.popUp).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_DOWN, handleTopMostEventDispatcherMouseDown);
+            (FlexGlobals.topLevelApplication as IEventDispatcher).removeEventListener(MouseEvent.MOUSE_DOWN, handleTopMostEventDispatcherMouseDown);
 		}
 	}
 }