         // The revalidateWhenComplete flag will be true in this case and will
         // force another validation to commit that change.  If the flag is
         // false, we can end the validation process.
-        if (revalidateWhenComplete)
-        {
-            revalidateWhenComplete = false;
-            viewChangeRequested = true;
+        if (delayedNavigationActions.length > 0)
+        {
+            executeDelayedActions();
             commitNavigatorAction();
         }
         else

            {
                navigationStack.clear();
            }
            
            // If the currentView navigation data object is the same as the
            // new one, the activeView doesn't need to be changed.  This can
            // happen if a pushView() is followed immediately by a popView().
            if (navigationStack.topView == currentViewDescriptor)
            {
                if (viewChanging)
                {
                    revalidateWhenComplete = false;
                }
                else
                {
                    viewChangeRequested = false;    
                }
                
                lastAction = ViewNavigatorAction.NONE;
                return;
            }
        }
        
        pendingViewTransition = transition;
        if (pendingViewTransition == null)
            pendingViewTransition = defaultTransition;

        // If a new view is in the process of being activated, we set the
        // revalidateWhenComplete flag to true so that the navigator knows
        // to apply this action after the previous one completes.
        if (viewChanging)
        {
            revalidateWhenComplete = true;
        }
        else
        {
            viewChangeRequested = true;
            invalidateProperties();
        }
    }
    
    /**

                return;
        }
        
        // Navigation operations are not committed immediately to allow the UI
        // to update before beginning the creation process.  When an action is
        // queued for the first time, we add an enter frame listener.
        if (delayedNavigationActions.length == 0)
        {
            // If the navigator is currently in the process of switching views,
            // the queued actions will automatically be run later in
            // navigatorActionCommitted() when the transition is complete.
            // So there is no need to add the ENTER_FRAME listener.
            if (!viewChanging)
                addEventListener(Event.ENTER_FRAME, executeDelayedActions);
        }
        
        delayedNavigationActions.push({action:action, viewClass:viewClass, 
            data:data, transition:transition, context:context});
