 
         return textFlowComposer.isOverset;
     }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Event handlers
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     *  Called when the TextFlow dispatches a 'damage' event
+     *  to indicate it has been modified.
+     */
+    private function textFlow_damageHandler(
+                            event:DamageEvent):void
+    {
+        //trace("damageHandler", "damageStart", event.damageStart, "damageLength", event.damageLength);
+        
+        // Don't want this handler firing when we're re-composing the text lines
+        // to handle the "damage".
+        textFlow.removeEventListener(DamageEvent.DAMAGE, textFlow_damageHandler);
+        
+        // The text flow changed.  It could have been either/or content or
+        // styles within the flow.
+        contentChanged = true;
+
+        // Unless both width/height were specified, need to recalc size.
+        if (isNaN(explicitWidth) || isNaN(explicitHeight))
+            invalidateSize();
+        
+        // Force the text lines to be re-composed.  The handler will be 
+        // re-added.
+        invalidateDisplayList();        
+    }    
 }
 
 }

        if (!mx_internal::styleChainInitialized)
            return;

        compose(explicitWidth, explicitHeight);

        var bounds:Rectangle = textFlowComposer.bounds;
        measuredWidth = Math.ceil(bounds.width);
        measuredHeight = Math.ceil(bounds.height);
    }
    
    /**

     */
    private var textInvalid:Boolean = false;
        
    /**
     *  @private
     *  This flag is set to true if the text must be clipped.
     */
    private var isOverset:Boolean = false;

    //--------------------------------------------------------------------------
    //
    //  Overridden properties
