Philip Mair created FLEX-33593:
----------------------------------
Summary: 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
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