[ https://issues.apache.org/jira/browse/FLEX-28967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carlos Rovira updated FLEX-28967: --------------------------------- Description: Steps to reproduce: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.managers.PopUpManager; protected function button1_clickHandler(event:MouseEvent):void { PopUpManager.centerPopUp(w); } ]]> </fx:Script> <s:Button click="button1_clickHandler(event)"/> <s:TitleWindow id="w" bottom="10"/> </s:Application> 1. using PopUpManager Error in the code: public function centerPopUp(popUp:IFlexDisplayObject):void { if (popUp is IInvalidating) IInvalidating(popUp).validateNow(); const o:PopUpData = findPopupInfoByOwner(popUp); // If we don't find the pop owner or if the owner's parent is not specified or is not on the // stage, then center based on the popUp's current parent. var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? o.parent : popUp.parent; if (popUpParent) { var systemManager:ISystemManager = o.systemManager; . . . . If const "o" is null, popUpParent is set to popUp.parent as stated by condition above. However in next step you assume that const "o" exists because you're asking for o.systemManager, but o is null. Therefore: TypeError: Error #1009: Cannot access a property or method of a null object reference Fix: public function centerPopUp(popUp:IFlexDisplayObject):void { if (popUp is IInvalidating) IInvalidating(popUp).validateNow(); const o:PopUpData = findPopupInfoByOwner(popUp); var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? o.parent : popUp.parent; if (popUpParent) { var systemManager:ISystemManager; if (o != null) { systemManager = o.systemManager; } else if (popUpParent.hasOwnProperty("systemManager")) { systemManager = popUpParent["systemManager"]; } else if (popUpParent is ISystemManager) { systemManager = popUpParent as ISystemManager; } if (!systemManager) return; // or throw exception maybe ? . . . . was: Steps to reproduce: 1. using PopUpManager Error in the code: public function centerPopUp(popUp:IFlexDisplayObject):void { if (popUp is IInvalidating) IInvalidating(popUp).validateNow(); const o:PopUpData = findPopupInfoByOwner(popUp); // If we don't find the pop owner or if the owner's parent is not specified or is not on the // stage, then center based on the popUp's current parent. var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? o.parent : popUp.parent; if (popUpParent) { var systemManager:ISystemManager = o.systemManager; . . . . If const "o" is null, popUpParent is set to popUp.parent as stated by condition above. However in next step you assume that const "o" exists because you're asking for o.systemManager, but o is null. Therefore: TypeError: Error #1009: Cannot access a property or method of a null object reference Fix: public function centerPopUp(popUp:IFlexDisplayObject):void { if (popUp is IInvalidating) IInvalidating(popUp).validateNow(); const o:PopUpData = findPopupInfoByOwner(popUp); var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? o.parent : popUp.parent; if (popUpParent) { var systemManager:ISystemManager; if (o != null) { systemManager = o.systemManager; } else if (popUpParent.hasOwnProperty("systemManager")) { systemManager = popUpParent["systemManager"]; } else if (popUpParent is ISystemManager) { systemManager = popUpParent as ISystemManager; } if (!systemManager) return; // or throw exception maybe ? . . . . > PopUpManagerImpl - centerPopUp method - TypeError: Error #1009: Cannot access > a property or method of a null object reference > ----------------------------------------------------------------------------------------------------------------------------- > > Key: FLEX-28967 > URL: https://issues.apache.org/jira/browse/FLEX-28967 > Project: Apache Flex > Issue Type: Bug > Components: PopUp Manager > Affects Versions: Adobe Flex SDK Previous > Environment: Affected OS(s): All OS Platforms > Affected OS(s): All OS Platforms > Browser: Internet Explorer 8.x > Language Found: English > Reporter: Adobe JIRA > Assignee: Carlos Rovira > Labels: EasyFix > Fix For: Apache Flex Next > > > Steps to reproduce: > <?xml version="1.0" encoding="utf-8"?> > <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" > xmlns:s="library://ns.adobe.com/flex/spark" > xmlns:mx="library://ns.adobe.com/flex/mx" > minWidth="955" minHeight="600"> > > <fx:Script> > <![CDATA[ > import mx.managers.PopUpManager; > protected function > button1_clickHandler(event:MouseEvent):void > { > PopUpManager.centerPopUp(w); > } > ]]> > </fx:Script> > > <s:Button click="button1_clickHandler(event)"/> > > <s:TitleWindow id="w" bottom="10"/> > > </s:Application> > 1. using PopUpManager > > Error in the code: > public function centerPopUp(popUp:IFlexDisplayObject):void > { > if (popUp is IInvalidating) > IInvalidating(popUp).validateNow(); > const o:PopUpData = findPopupInfoByOwner(popUp); > > // If we don't find the pop owner or if the owner's parent is not > specified or is not on the > // stage, then center based on the popUp's current parent. > var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? > o.parent : popUp.parent; > if (popUpParent) > { > var systemManager:ISystemManager = o.systemManager; > . > . > . > . > If const "o" is null, popUpParent is set to popUp.parent as stated by > condition above. > However in next step you assume that const "o" exists because you're asking > for o.systemManager, but o is null. > Therefore: TypeError: Error #1009: Cannot access a property or method of a > null object reference > Fix: > public function centerPopUp(popUp:IFlexDisplayObject):void > { > if (popUp is IInvalidating) > IInvalidating(popUp).validateNow(); > const o:PopUpData = findPopupInfoByOwner(popUp); > > var popUpParent:DisplayObject = (o && o.parent && o.parent.stage) ? > o.parent : popUp.parent; > if (popUpParent) > { > var systemManager:ISystemManager; > if (o != null) { > systemManager = o.systemManager; > } else if (popUpParent.hasOwnProperty("systemManager")) > { > systemManager = popUpParent["systemManager"]; > } else if (popUpParent is ISystemManager) { > systemManager = popUpParent as ISystemManager; > } > > if (!systemManager) > return; // or throw exception maybe ? > . > . > . > . -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira