     //--------------------------------------------------------------------------
     
     /**
+     *  @private
+     *  Remove listeners
+     */ 
+    private function actionBarMoveEffect_effectEndedHandler(event:EffectEvent):void
+    {
+        event.target.removeEventListener(EffectEvent.EFFECT_UPDATE, actionBarMoveEffect_effectUpdateHandler);
+        event.target.removeEventListener(EffectEvent.EFFECT_END, actionBarMoveEffect_effectEndedHandler);
+    }
+    
+    /**
+     *  @private
+     *  Since layout is disabled, we need to force validation on all of the
+     *  participating display objects.
+     */
+    private function actionBarMoveEffect_effectUpdateHandler(event:EffectEvent):void
+    {
+        if (actionBar.actionGroup)
+            actionBar.actionGroup.validateDisplayList();
+        
+        if (actionBar.navigationGroup)
+            actionBar.navigationGroup.validateDisplayList();
+        
+        if (actionBar.titleDisplay)
+            (actionBar.titleDisplay as UIComponent).validateDisplayList();
+        
+        if (actionBar.titleGroup)
+            actionBar.titleGroup.validateDisplayList();
+        
+        if (cachedTitleGroup)
+            cachedTitleGroup.validateDisplayList();
+        
+        if (cachedNavigationGroup)
+            cachedNavigationGroup.validateDisplayList();
+        
+        if (cachedActionGroup)
+            cachedActionGroup.validateDisplayList();
+    }
+    
+    /**
      * @private
      */ 
     private function effectComplete(event:EffectEvent):void

                {
                    actionBar.skin.invalidateDisplayList();
                }
            }
            
            verticalTransition = false;

import mx.effects.Parallel;
import mx.events.EffectEvent;
import mx.events.FlexEvent;
import mx.geom.TransformOffsets;

import spark.components.ActionBar;
import spark.components.Group;
