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 1a776dc652 Emulation - make sure invisible menus do not accidentally 
hide visible ones
1a776dc652 is described below

commit 1a776dc652e57282699b39ec5214a7d160a172c4
Author: Yishay Weiss <yishayj...@hotmail.com>
AuthorDate: Mon Apr 11 14:53:41 2022 +0300

    Emulation - make sure invisible menus do not accidentally hide visible
    ones
    
    TODO - there might be an issue with 2 separate lists of visible menus
    being maintained in mx MenuModel and in CascadingMenuModel
---
 .../controllers/MenuSelectionMouseController.as    | 27 +++++++++++++---------
 .../CascadingMenuSelectionMouseController.as       | 19 +++++++++++++++
 2 files changed, 35 insertions(+), 11 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
index fb9aa37e70..5b1672c69c 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
@@ -73,17 +73,7 @@ package org.apache.royale.html.beads.controllers
                {
                        _strand = value;
                        super.strand = value;
-                                               
-                       // detect an up event on the background as a way to 
dismiss this menu
-                       var host:IEventDispatcher = 
UIUtils.findPopUpHost(_strand as IUIBase) as IEventDispatcher;
-                       host.addEventListener("hideMenus", handleHideMenus);
-                       
-                       COMPILE::SWF {
-                               host.addEventListener(MouseEvent.MOUSE_UP, 
hideMenu_internal);
-                       }
-                       COMPILE::JS {
-                               window.addEventListener('mouseup', 
hideMenu_internal, false);
-                       }
+                       addClickOutHandler(value);
                }
                /**
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
@@ -210,6 +200,21 @@ package org.apache.royale.html.beads.controllers
                        }                       
                }
                
+               protected function addClickOutHandler(menu:Object):void
+               {
+                       // detect an up event on the background as a way to 
dismiss this menu
+                       var host:IEventDispatcher = 
UIUtils.findPopUpHost(_strand as IUIBase) as IEventDispatcher;
+                       host.addEventListener("hideMenus", handleHideMenus);
+                       
+                       COMPILE::SWF {
+                               host.addEventListener(MouseEvent.MOUSE_UP, 
hideMenu_internal);
+                       }
+                       COMPILE::JS {
+                               window.addEventListener('mouseup', 
hideMenu_internal, false);
+                       }
+
+               }
+               
                /**
                 * @private
                 */
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
index c71636061d..7dfecfd8af 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
@@ -33,6 +33,9 @@ package mx.controls.beads.controllers
        import mx.supportClasses.IFoldable;
        import mx.controls.Menu;
        import org.apache.royale.core.IPopUpHost;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IUIBase;
+       import org.apache.royale.html.beads.models.MenuModel;
 
 /**
  *  The CascadingMenuSelectionMouseController is the default controller for 
emulation cascading menu
@@ -138,6 +141,22 @@ package mx.controls.beads.controllers
                        return parentMenuBar ? parentMenuBar : _strand as 
IEventDispatcher;
                }
 
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+                       if (!(value as IUIBase).visible)
+                       {
+                               removeClickOutHandler(value);
+                               (value as 
IEventDispatcher).addEventListener('show', showHandler);
+                       }
+               }
+
+               protected function showHandler(event:Event):void
+               {
+                       MenuModel.menuList.push(event.target);
+                       addClickOutHandler(event.target);
+               }
+
        }
 
 }

Reply via email to