On 10 Apr 2012, at 15:16, Michael A. Labriola wrote:

This is already in my whiteboard put I want to push it to trunk.

In ArrayList's itemUpdatedHandler, it checks the event.target and attempts to get the index. However, in many cases (such as when you call itemUpdated()) this target is not defined. getItemIndex() returns a -1 in that case, but here it is assigned to a unsigned integer, meaning the property it dispatches is even more non- sensical than normal. Simple change right now is to make this signed so we at least get the -1. Any objections?

protected function itemUpdateHandler(event:PropertyChangeEvent):void
   {
       internalDispatchEvent(CollectionEventKind.UPDATE, event);
       // need to dispatch object event now
if (_dispatchEvents == 0 && hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE))
       {
var objEvent:PropertyChangeEvent = PropertyChangeEvent(event.clone());
           var index:uint = getItemIndex(event.target);
objEvent.property = index.toString() + "." + event.property;
           dispatchEvent(objEvent);
       }
   }

Proposed:

protected function itemUpdateHandler(event:PropertyChangeEvent):void
   {
       internalDispatchEvent(CollectionEventKind.UPDATE, event);
       // need to dispatch object event now
if (_dispatchEvents == 0 && hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE))
       {
var objEvent:PropertyChangeEvent = PropertyChangeEvent(event.clone()); //When itemUpdated is called, there is no event target. This means getItemIndex returns a -1 //Since this was originally cast as a uint, this caused many strange results. Changing it to //an int to be consistent throughout other uses of this event
           var index:int = getItemIndex(event.target);
objEvent.property = index.toString() + "." + event.property;
           dispatchEvent(objEvent);
       }
   }

Looks like common sense to me.

Tink

Reply via email to