             if (editingMode != EditingMode.READ_ONLY)
             {
                 // Must preserve the selection, if there was one.
-                var selectionManager:ISelectionManager = getSelectionManager();
+                var selManager:ISelectionManager = 
+                    _textContainerManager.beginInteraction();
                 
                 // The visible selection will be refreshed during the update.
-                selectionManager.selectRange(oldAnchorPosition, oldActivePosition);        
+                selManager.selectRange(oldAnchorPosition, oldActivePosition);        
                                      
-                releaseSelectionManager(); 
+                _textContainerManager.endInteraction();
             }           
             
             displayAsPasswordChanged = false;

        // Make sure all properties are committed before doing the operation.
        validateNow();

        var selectionManager:ISelectionManager = getSelectionManager();
        
        selectionManager.selectRange(anchorPosition, activePosition);        
                
        // Refresh the selection.  This does not cause a damage event.
        selectionManager.refreshSelection();
        
        releaseSelectionManager();

        // Remember if the current selection is a range which was set
        // programatically.

    /**
     *  @private
     */
    mx_internal var passwordChar:String = "*";

    /**
