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