         if (!viewNavigatorPopUp|| !viewNavigatorPopUp.isOpen)
             return;
         
+        // Since view transitions can temporarily alter the display tree, we
+        // need to end all view transitions so that the display tree is restored
+        // to a correct state.
+        ViewTransitionBase.endTransitions();
+        
         viewNavigatorPopUp.addEventListener(PopUpEvent.CLOSE, navigatorPopUp_closeHandler);
         viewNavigatorPopUp.close(true);
         viewNavigatorPopUp.removeEventListener('mouseDownOutside', navigatorPopUp_mouseDownOutsideHandler);

import spark.components.supportClasses.ViewNavigatorBase;
import spark.events.ElementExistenceEvent;
import spark.events.PopUpEvent;

use namespace mx_internal;


        // it is already open.
        if (index >= numElements || !viewNavigatorPopUp|| viewNavigatorPopUp.isOpen)
            return;

        // Since view transitions can temporarily alter the display tree, we
        // need to end all view transitions so that the display tree is restored
        // to a correct state.
        ViewTransitionBase.endTransitions();

        _popUpNavigatorIndex = index;
        _popUpNavigator = getElementAt(index) as ViewNavigatorBase;
        
        viewNavigatorPopUp.addEventListener('mouseDownOutside', navigatorPopUp_mouseDownOutsideHandler, false, 0, true);
        viewNavigatorPopUp.addElement(_popUpNavigator);
        
        // Make sure the first navigator is visible and prevent the
        // SHOW event from being dispatched.
        _popUpNavigator.setVisible(true, true);
        
        // Open the popup
        viewNavigatorPopUp.open(owner, true);
