You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by "Philip Mair (JIRA)" <ji...@apache.org> on 2013/06/19 14:36:20 UTC
[jira] [Commented] (FLEX-33593) mx.controls.MenuBar#mouseOutHandler
TypeError
[ 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