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 2022/04/11 11:56:02 UTC
[royale-asjs] branch develop updated: Emulation - make sure invisible menus do not accidentally hide visible ones
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 <yi...@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);
+ }
+
}
}