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 <[email protected]>
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);
                }
        }
 }

Reply via email to