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);
        }
    }


digital primates (r)

Michael Labriola
mlabri...@digitalprimates.net<mailto:mlabri...@digitalprimates.net>

tel:  +1.773.693.7800 x206
fax: +1.773.409.9251

Reply via email to