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 3258429dbf Stop mx Menu from creating Basic Menu which messed up nested menu selection. new d17d4f0585 Merge branch 'develop' of https://github.com/apache/royale-asjs into develop 3258429dbf is described below commit 3258429dbfc0e946b1c2ef26b9984ca8ceb151b4 Author: Yishay Weiss <yishayj...@hotmail.com> AuthorDate: Wed Apr 6 10:22:02 2022 +0300 Stop mx Menu from creating Basic Menu which messed up nested menu selection. --- .../MXRoyale/src/main/resources/defaults.css | 2 +- .../MXRoyale/src/main/royale/mx/controls/Menu.as | 23 +++++++++++++++++----- .../CascadingMenuSelectionMouseController.as | 6 ++++++ .../menuClasses/CascadingMenuItemRenderer.as | 14 ++++++++++++- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css index b7348d978a..dcb8d858b9 100644 --- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css +++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css @@ -380,7 +380,7 @@ menu|MenuBarItemRenderer { } Menu { - IMenu: ClassReference("org.apache.royale.html.CascadingMenu"); + IMenu: ClassReference("mx.controls.Menu"); IBeadModel: ClassReference("mx.controls.beads.models.CascadingMenuModel"); IBeadController: ClassReference("mx.controls.beads.controllers.CascadingMenuSelectionMouseController"); IItemRenderer: ClassReference("mx.controls.menuClasses.CascadingMenuItemRenderer"); diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as index 9547be8cf7..cf9fb5a6bd 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as @@ -99,6 +99,8 @@ package mx.controls import org.apache.royale.core.ILayoutView; import org.apache.royale.core.IHasLabelField; import org.apache.royale.html.util.getModelByType; + import org.apache.royale.core.IPopUpHostParent; + import org.apache.royale.core.IPopUpHost; use namespace mx_internal; @@ -593,7 +595,7 @@ package mx.controls * @playerversion AIR 1.1 * @productversion Flex 3 */ - public class Menu extends UIComponent implements IFocusManagerContainer, IMenu, IItemRendererProvider, ILayoutParent, ILayoutView, IHasLabelField + public class Menu extends UIComponent implements IFocusManagerContainer, IMenu, IItemRendererProvider, ILayoutParent, ILayoutView, IHasLabelField, IPopUpHostParent { // include "../core/Version.as"; @@ -680,7 +682,7 @@ package mx.controls * @playerversion AIR 1.1 * @productversion Flex 3 */ - public static function popUpMenu(menu:Menu, parent:UIComponent, mdp:Object):void + public static function popUpMenu(menu:Menu, parent:IUIBase, mdp:Object):void { menu.parentDisplayObject = parent ? parent : @@ -781,7 +783,7 @@ package mx.controls * @private * Where to add this menu on the display list. */ - mx_internal var parentDisplayObject:UIComponent; + mx_internal var parentDisplayObject:IUIBase; /** * @private @@ -1624,8 +1626,8 @@ package mx.controls */ public function show(parent:IUIBase, xShow:Number = 0, yShow:Number = 0):void { - if (parent is UIComponent) - parentDisplayObject = (parent as UIComponent); + if (parent is IUIBase) + parentDisplayObject = (parent as IUIBase); //this could be an empty menu so we'll return if it is //if (collection && collection.length == 0) @@ -3116,6 +3118,17 @@ package mx.controls dispatchEvent(new Event("iconFunctionChanged")); } + + private var _popUpHost:IPopUpHost; + public function get popUpHost():IPopUpHost + { + return _popUpHost; + } + + public function set popUpHost(value:IPopUpHost):void + { + _popUpHost = value; + } } 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 0899473464..c71636061d 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 @@ -31,6 +31,8 @@ package mx.controls.beads.controllers import org.apache.royale.core.UIBase; import org.apache.royale.events.IEventDispatcher; import mx.supportClasses.IFoldable; + import mx.controls.Menu; + import org.apache.royale.core.IPopUpHost; /** * The CascadingMenuSelectionMouseController is the default controller for emulation cascading menu @@ -74,6 +76,10 @@ package mx.controls.beads.controllers override protected function selectedHandler(event:ItemClickedEvent):void { + if (_strand is Menu && event.target is IPopUpHost) + { + (_strand as Menu).popUpHost = event.target as IPopUpHost; + } super.selectedHandler(event); if (event.target is IFoldable && (event.target as IFoldable).canUnfold) { diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as index b405f2a2fb..1f0f88cf1c 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as @@ -24,6 +24,8 @@ package mx.controls.menuClasses import org.apache.royale.core.layout.EdgeData; import org.apache.royale.html.supportClasses.CascadingMenuItemRenderer; import mx.supportClasses.IFoldable; + import org.apache.royale.core.IPopUpHost; + import org.apache.royale.core.IPopUpHostParent; /** * The ListItemRenderer is the default renderer for mx.controls.List @@ -34,7 +36,7 @@ package mx.controls.menuClasses * @productversion Flex 3 */ - public class CascadingMenuItemRenderer extends org.apache.royale.html.supportClasses.CascadingMenuItemRenderer implements IFoldable + public class CascadingMenuItemRenderer extends org.apache.royale.html.supportClasses.CascadingMenuItemRenderer implements IFoldable, IPopUpHost, IPopUpHostParent { public function CascadingMenuItemRenderer() { @@ -100,6 +102,16 @@ package mx.controls.menuClasses { return getHasMenu(); } + + public function get popUpParent():IPopUpHostParent + { + return this; + } + + public function get popUpHost():IPopUpHost + { + return this; + } } }