[
https://issues.apache.org/jira/browse/FLEX-33593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13687928#comment-13687928
]
Philip Mair commented on FLEX-33593:
------------------------------------
On trying to provide a sample code i got an equal error in mouseOverHandler!
I think that all eventHandlers which are registered here:
MenuBar#insertMenuBarItem()
item.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
item.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
item.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
item.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
should be removed in removeMenuBarItemAt(), and removeAll()
> mx.controls.MenuBar#mouseOutHandler TypeError
> ---------------------------------------------
>
> Key: FLEX-33593
> URL: https://issues.apache.org/jira/browse/FLEX-33593
> Project: Apache Flex
> Issue Type: Bug
> Components: mx: Menu Bar
> Affects Versions: Apache Flex 4.9.0
> Reporter: Philip Mair
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> When changing MenuBar dataProvider within click on Menu sometimes causes a
> TypeError in mouseOutHandler.
> I solved this with following workaround:
> public override function
> addChild(child:DisplayObject):DisplayObject
> {
> if( child is IMenuBarItemRenderer )
> {
> var item: IMenuBarItemRenderer =
> IMenuBarItemRenderer( child );
>
>
> item.addEventListener( MouseEvent.MOUSE_OUT,
> patchedMouseOutHandler, false, int.MAX_VALUE );
> }
>
> return super.addChild( child );
> }
>
> private function patchedMouseOutHandler( event: MouseEvent ) :
> void
> {
> //stop the event to avoid npe
> event.stopImmediatePropagation();
> event.stopPropagation();
>
> var item:IMenuBarItemRenderer =
> IMenuBarItemRenderer(event.target);
> var index:int = item.menuBarItemIndex;
> var m:Menu = getMenuAt(index);
>
> if (item.enabled && selectedIndex != index)
> {
> if( menuBarItems.indexOf( item ) >= 0 )
> menuBarItems[index].menuBarItemState =
> "itemUpSkin";
> }
> // Fire the appropriate rollout event
> if (item.data &&
> (m.dataDescriptor.getType(item.data) !=
> "separator"))
> {
> var menuEvent:MenuEvent = new
> MenuEvent(MenuEvent.ITEM_ROLL_OUT);
> menuEvent.index = index;
> menuEvent.menuBar = this;
> menuEvent.label = itemToLabel(item.data);
> menuEvent.item = item.data;
> menuEvent.itemRenderer = item;
> dispatchEvent(menuEvent);
> }
> }
--
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