         }
     }
     
+    /**
+     *  @private
+     */
+    private function textInputHandler(event:TextEvent):void
+    {
+        // Dispatch a "changing" event
+        var e:TextOperationEvent = new TextOperationEvent(TextOperationEvent.CHANGING);
+        var operation:TextInputOperation = new TextInputOperation();
+        operation.text = event.text;
+        e.operation = operation;
+        
+        if (!dispatchEvent(e))
+            event.preventDefault();
+    }
+    
     //--------------------------------------------------------------------------
     //
     //  Variables

{
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.geom.Rectangle;
import flash.text.Font;
import flash.text.TextField;

    {
        super();
        
        // RichEditableText is double-clickable by default, so we will be too.
        doubleClickEnabled = true;
        
        // Add a high priority change handler so we can capture the event
        // and re-dispatch as a TextOperationEvent
        addEventListener(Event.CHANGE, changeHandler, false, 100);
        
        // Add a textInput handler so we can capture and re-dispatch as
        // a TextOperationEvent "changing" event.
        addEventListener(TextEvent.TEXT_INPUT, textInputHandler);
        
        // Add a key down listener to listen for enter key
        addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
