     {
         var textWidth:Number = 0;
         var textHeight:Number = 0;
-        var lineMetrics:TextLineMetrics;
+        
+        // reset text if it was truncated before.
+        if (titleDisplay.isTruncated)
+            titleDisplay.text = title;
+        titleDisplay.commitStyles();
         
         if (title != "")
         {
-            lineMetrics = measureText(title);
-            textWidth = lineMetrics.width + TEXT_WIDTH_PADDING;
+            textWidth = titleDisplay.textWidth + TEXT_WIDTH_PADDING;
+            textHeight = titleDisplay.textHeight + UITextField.TEXT_HEIGHT_PADDING;
+            descent = titleDisplay.getLineMetrics(0).descent;
         }
         else
         {
-            lineMetrics = measureText("Wj");
-        }
-        
-        textHeight = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING;
-        descent = lineMetrics.descent;
+            // ignore text width...we just need textHeight, but we need to use 
+            // measureText("Wj") to figure this out
+            var lineMetrics:TextLineMetrics = measureText("Wj");
+            textHeight = measureText("Wj").height + UITextField.TEXT_HEIGHT_PADDING;
+            descent = lineMetrics.descent;
+        }
         
         measuredWidth = textWidth;
         measuredHeight = textHeight;

    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
        
        titleDisplay.commitStyles();
        titleDisplay.width = unscaledWidth;
        titleDisplay.height = unscaledHeight;
        
        // before truncating text, we need to reset it to its original value
        if (titleDisplay.isTruncated)
            titleDisplay.text = title;
        titleDisplay.truncateToFit();
        
        titleDisplayShadow.commitStyles();

import flash.events.Event;
import flash.geom.Matrix;
import flash.text.TextFormatAlign;

import mx.core.UIComponent;
import mx.core.UITextField;
