+ std::list< LayoutTransition > mLayoutTransitions;
+ struct AnimationFinishedFunctor
+ {
+ AnimationFinishedFunctor( LayoutController& layoutController, LayoutTransition& layoutTransition, LayoutPositionDataArray& array )
+ : layoutController( layoutController ),
+ layoutDataPositionArray(),
+ layoutItem( layoutTransition.layoutItem ),
+ layoutTransitionType( layoutTransition.layoutTransitionType )
+ {
+ layoutDataPositionArray.swap( array );
+ }
+
+ void operator()( Animation& animation )
+ {
+ layoutController.PerformLayoutPositioning( layoutDataPositionArray, true );
+ layoutController.mAnimationFinishedFunctors.pop_front();
+ if (layoutTransitionType != -1)
+ {
+ LayoutTransitionDataPtr layoutTransitionDataPtr = layoutItem->GetTransitionData( layoutTransitionType );
+ layoutTransitionDataPtr->EmitSignalFinish( layoutTransitionType );
+ }
+ }
+
+ LayoutController& layoutController;
+ LayoutPositionDataArray layoutDataPositionArray;
+ LayoutItemPtr layoutItem;
+ int layoutTransitionType;
+ };
+