You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flex.apache.org by "Alex Harui (JIRA)" <ji...@apache.org> on 2014/12/18 16:34:13 UTC

[jira] [Commented] (FLEX-34355) ActiveWindowManager, findHighestModalForm issue

    [ https://issues.apache.org/jira/browse/FLEX-34355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14251799#comment-14251799 ] 

Alex Harui commented on FLEX-34355:
-----------------------------------

I've decided that a simple parent!=null check could break some other person's app where they are popping up something that was parented in the app.

More extensive checks for whether the parent is not null but already on the popup list doesn't seem worth the risk.  Plus there's been no convergence on what should happen if a popup is already on the list.

The workaround exists and is relatively straightforward.  If you know that you aren't popping up something that is already parented, check for null yourself.  You can even make your own PopUpManager that does that check before calling the original PopUpManager.

> ActiveWindowManager, findHighestModalForm issue
> -----------------------------------------------
>
>                 Key: FLEX-34355
>                 URL: https://issues.apache.org/jira/browse/FLEX-34355
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: .Unspecified - Framework, Runtime Exceptions
>    Affects Versions: Apache Flex 4.12.0, Apache Flex 4.13.0
>            Reporter: Alexander Mazuruk
>            Assignee: Alex Harui
>
> We have a lot of modal messageBoxes popped out on the stage, and we are trying to close them one by one, and for the second closed dialog we are facing this issue. Modal form was removed from the stage faster than mouseClickhandler from SystemManager was called actually.
> IChildList interface has .contains() method, Why in the world you are not using it?
> This code fragment must be fixed:
> 	private function findHighestModalForm():int
> 	{
> /////////////////////////////////////////
> 				var index:int = rc.getChildIndex(f as DisplayObject);
> 				if (index > 0)
> 				{
> 				}
> /////////////////////////////////////////
> 	}
> As follows:
> 	private function findHighestModalForm():int
> 	{
> /////////////////////////////////////////
> 	var index:int = rc.contains(f as DisplayObject) ? rc.getChildIndex(f as DisplayObject) : -1;
> 				if (index > 0)
> 				{
> 				}
> /////////////////////////////////////////
> 	}
> Otherwise we have this error pops out when we don't have a child in the IChildList and code is trying to fetch it out, but it's not there already.
> ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
> 	at flash.display::DisplayObjectContainer/getChildIndex()
> 	at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_getChildIndex()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/managers/SystemManager.as:2195]
> 	at mx.managers::SystemRawChildrenList/getChildIndex()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/managers/SystemRawChildrenList.as:189]
> 	at mx.managers.systemClasses::ActiveWindowManager/findHighestModalForm()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as:441]
> 	at mx.managers.systemClasses::ActiveWindowManager/mouseDownHandler()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as:469]
> 	at flash.events::EventDispatcher/dispatchEventFunction()
> 	at flash.events::EventDispatcher/dispatchEvent()
> 	at mx.core::UIComponent/dispatchEvent()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/core/UIComponent.as:13682]
> 	at mx.managers::SystemManager/mouseEventHandler()[/Users/justinmclean/Documents/ApacheFlex4.12.0/frameworks/projects/framework/src/mx/managers/SystemManager.as:2926]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)