You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pi...@apache.org on 2019/10/04 12:11:40 UTC

[royale-asjs] branch develop updated: DropDownList: Fix open/close mechanism

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

piotrz 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 bf8a300  DropDownList: Fix open/close mechanism
bf8a300 is described below

commit bf8a300aec5df9dd666e6e3bf6d15fa0a727f113
Author: Piotr Zarzycki <pi...@gmail.com>
AuthorDate: Fri Oct 4 14:11:30 2019 +0200

    DropDownList: Fix open/close mechanism
    
    (reference #474 )
---
 .../beads/controllers/DropDownListController.as    | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/controllers/DropDownListController.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/controllers/DropDownListController.as
index e3d7572..9f09ba0 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/controllers/DropDownListController.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/beads/controllers/DropDownListController.as
@@ -70,15 +70,19 @@ public class DropDownListController implements IBead, IBeadController
         var popUpModel:ISelectionModel = UIBase(viewBead.popUp).model as ISelectionModel;
         IUIBase(viewBead.popUp).width = IUIBase(_strand).width;
         popUpModel.dataProvider = selectionModel.dataProvider;
-        popUpModel.labelField = selectionModel.labelField;
-        viewBead.popUpVisible = true; // adds to display list as well
+        popUpModel.labelField = selectionModel.labelField;// adds to display list as well
         popUpModel.selectedIndex = selectionModel.selectedIndex;
-        var pt:Point = new Point(0, IUIBase(_strand).height);
-        pt = PointUtils.localToGlobal(pt, _strand);
-        IUIBase(viewBead.popUp).x = pt.x;
-        IUIBase(viewBead.popUp).y = pt.y;
-        IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
-        UIComponent(viewBead.popUp).callLater(registerDismissHandler);
+        viewBead.popUpVisible = !viewBead.popUpVisible;
+        
+        if (viewBead.popUpVisible)
+        {
+            var pt:Point = new Point(0, IUIBase(_strand).height);
+            pt = PointUtils.localToGlobal(pt, _strand);
+            IUIBase(viewBead.popUp).x = pt.x;
+            IUIBase(viewBead.popUp).y = pt.y;
+            IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
+            UIComponent(viewBead.popUp).callLater(registerDismissHandler);
+        }
     }
     
     // The browser send clicks to listeners added as the event is being dispatched, so if we don't
@@ -90,7 +94,7 @@ public class DropDownListController implements IBead, IBeadController
     
     private function dismissHandler(event:org.apache.royale.events.MouseEvent):void
     {
-        if (event.target == _strand) return;
+        if (event.target == _strand || event.target.parent == _strand) return;
         
         IUIBase(_strand).topMostEventDispatcher.removeEventListener(org.apache.royale.events.MouseEvent.CLICK, dismissHandler);
         var viewBead:IDropDownListView = _strand.getBeadByType(IDropDownListView) as IDropDownListView;