incubator-flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael A. Labriola" <labri...@digitalprimates.net>
Subject ArrayList itemUpdateHandler Change
Date Tue, 10 Apr 2012 14:16:33 GMT
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
mlabriola@digitalprimates.net<mailto:mlabriola@digitalprimates.net>

tel:  +1.773.693.7800 x206
fax: +1.773.409.9251

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message