flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: Possible bug in MouseEvent handling
Date Tue, 19 Nov 2013 17:35:40 GMT
The goal of mouseEventHandler is to replace non-cancelable MouseEvents
with cancelable MouseEvents.  The doc sort of says that, but probably
could be worded better.

Regarding the fix, I'm not sure I understand why you are calling
getDefinitionByName. Isn't it sufficient to simply check if the event
object's getQUalfiedClassName is "flash.events.MouseEvent"?

On 11/19/13 8:07 AM, "MVBaker" <mike.baker@RelianceInteractive.com> wrote:

>Hi Alex,
>
>Thanks for taking the time. I'm not sure about the proper way to correct
>this. I created a new JIRA item
>(https://issues.apache.org/jira/browse/FLEX-33915). I have an idea for how
>to fix it below that uses the same class type as that which was passed to
>the function. I'm not sure if the manipulation of class type will result
>in
>a compiler error, requiring the cancelableEvent to be an Object rather
>than
>a MouseEvent. I'm unable to find info on building the framework with the
>change.
>BTW - I noted a documentation bug here as well because it says that it is
>supposed to replace cancelable events but the code replaces events with
>!e.cancelable (either it's a doc but or it's a functionality bug and the
>documentation was the intended functionality).
>
>Thanks again,
>Mike
>
>private function mouseEventHandler(e:MouseEvent):void
>{
>   if (!e.cancelable && e.eventPhase != EventPhase.BUBBLING_PHASE)
>   {
>      e.stopImmediatePropagation();
>      var cancelableEvent:MouseEvent = null;
>      // use the class of the item that was passed in
>      var mouseEventClass:Class =
>Class(getDefinitionByName(getQualifiedClassName(e));
>      if ("clickCount" in e)
>      {
>         // AIR MouseEvent. We need to use a constructor so we can
>         // pass in clickCount because it is a read-only property.
>         cancelableEvent = new mouseEventClass(e.type, e.bubbles, true,
>e.localX,
>                     e.localY, e.relatedObject, e.ctrlKey, e.altKey,
>                     e.shiftKey, e.buttonDown, e.delta,
>                     e["commandKey"], e["controlKey"], e["clickCount"]);
>      }
>      else
>      {
>         cancelableEvent = new mouseEventClass(e.type, e.bubbles, true,
>e.localX, 
>                      e.localY, e.relatedObject, e.ctrlKey, e.altKey,
>                      e.shiftKey, e.buttonDown, e.delta);
>      }
>      
>      e.target.dispatchEvent(cancelableEvent);
>   }
>}
>
>
>
>--
>View this message in context:
>http://apache-flex-users.2333346.n4.nabble.com/Possible-bug-in-MouseEvent-
>handling-tp3804p3825.html
>Sent from the Apache Flex Users mailing list archive at Nabble.com.


Mime
View raw message