 
     private function stageText_focusInHandler(event:FocusEvent):void
     {
-        startTextEdit();
-        // Focus events are documented as bubbling. However, all events coming
-        // from StageText are set to not bubble. So we need to create an
-        // appropriate bubbling event here.
-        dispatchEvent(new FocusEvent(event.type, true, event.cancelable,
-                event.relatedObject, event.shiftKey, event.keyCode, event.direction));
+        if (startTextEdit()){
+            trace("[DEBUG] stageText focus IN:", debugId);
+            // Focus events are documented as bubbling. However, all events coming
+            // from StageText are set to not bubble. So we need to create an
+            // appropriate bubbling event here.
+            dispatchEvent(new FocusEvent(event.type, true, event.cancelable,
+                    event.relatedObject, event.shiftKey, event.keyCode, event.direction));
+        }
     }
 
     private function stageText_focusOutHandler(event:FocusEvent):void
     {
-        endTextEdit();
-        // Focus events are documented as bubbling. However, all events coming
-        // from StageText are set to not bubble. So we need to create an
-        // appropriate bubbling event here.
-        dispatchEvent(new FocusEvent(event.type, true, event.cancelable,
-                event.relatedObject, event.shiftKey, event.keyCode, event.direction));
+        if (endTextEdit()) {
+            trace("[DEBUG] stageText focus OUT:", debugId);
+            // Focus events are documented as bubbling. However, all events coming
+            // from StageText are set to not bubble. So we need to create an
+            // appropriate bubbling event here.
+            dispatchEvent(new FocusEvent(event.type, true, event.cancelable,
+                    event.relatedObject, event.shiftKey, event.keyCode, event.direction));
+        }
+
     }
 
     private function stageText_keyDownHandler(event:KeyboardEvent):void



        stageText.stage = null;
       removeEventListener(MouseEvent.CLICK, mouseClickHandler);
       removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
       removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

        stageText.removeEventListener(Event.CHANGE, stageText_changeHandler);
        stageText.removeEventListener(Event.COMPLETE, stageText_completeHandler);
        stageText.removeEventListener(FocusEvent.FOCUS_IN, stageText_focusInHandler);

     * EDITING AND FOCUS MANAGEMENT
     */

    /**
     * @return true if editing was actually stated,, false is already started
     * */
    protected function startTextEdit():Boolean
    {
        if (!isEditing)
        {
