Jump to content


  • Posts

  • Joined

  • Last visited

Posts posted by dezza

  1. I think I have possibly found a bug in the TransformManager class to do with selecting items.


    Please note I think this bug would be unlikely to occur if you were selecting/deselecting items using the mouse. I am probably only seeing it because I am supporting undo/redo operations in my application, so I am changing the selection programatically based on the history of user interactions.


    The bug:


    When setting the selection to be two items, and then setting the selection to be one (different) item, only one of the initially selected items is deselected.




    transformManager.selectItems( [ redItem, greenItem ] );
    // returns transformItems for redItem, greenItem
    trace( transformManager.selectedItems );
    transformManager.selectItems( [ blueItem ] );
    // returns transformItems for redItem, blueItem. This is wrong! it should just be blueItem.
    trace( transformManager.selectedItems );

    I believe the problem is a loop (line 1126) in the selectItems() method.


    It is iterating over the _selectedItems array, but I suspect the length of the array can be modified during an iteration, prematurely exiting the loop before all items are iterated over.


    I have seemingly fixed this behaviour by iterating over a copy of the _selectedItems array instead:




    var selectedItems : Array = _selectedItems.slice();
    // ... iterate over copy instead


    Can anyone confirm that this is happening or am I misunderstanding something here?


    Cheers d