 				compositionWidth = _width;
 			}
 			
-			if (!useTCM)
+			if (testFlag(FLAG_HTML_TEXT_CHANGED))
+			{
+				if (!hostFormat)
+					createHostFormat();
+				
+				composeHTMLText(compositionWidth, compositionHeight);							
+			}
+			else
 			{
 				if (!elementFormat)
 					createElementFormat();	
 				
 				composeText(compositionWidth, compositionHeight);							
 			}
-			else
+		
+			var origX:Number = x;
+			var origWidth:Number = _width; 
+			var origHeight:Number = _height; 
+					
+			if (_autoSize != TextFieldAutoSize.NONE)
 			{
-				if (!hostFormat)
-					createHostFormat();
-				
-				composeHTMLText(compositionWidth, compositionHeight);							
+				_height = _textHeight + PADDING_TOP + PADDING_BOTTOM;
+				if (!wordWrap)
+				{
+					_width = _textWidth + PADDING_LEFT + PADDING_RIGHT;
+					
+					// adjust x for CENTER and RIGHT cases
+					if (_autoSize == TextFieldAutoSize.RIGHT)
+						x += origWidth - _width;
+					else if (_autoSize == TextFieldAutoSize.CENTER)
+						x += (origWidth - _width) / 2;
+				}
+				if (_height != origHeight || _width != origWidth || x != origX)
+					setFlag(FLAG_GRAPHICS_INVALID);
 			}
-		}
-		
-		// FIXME (gosmith): Does this belong inside the previous block?
-		var origX:Number = x;
-		var origWidth:Number = _width; 
-		var origHeight:Number = _height; 
-				
-		if (_autoSize != TextFieldAutoSize.NONE)
-		{
-			_height = _textHeight + PADDING_TOP + PADDING_BOTTOM;
-			if (!wordWrap)
+			
+			if (_textWidth > origWidth || _textHeight > origHeight)
 			{
-				_width = _textWidth + PADDING_LEFT + PADDING_RIGHT;
-				
-				// adjust x for CENTER and RIGHT cases
-				if (_autoSize == TextFieldAutoSize.RIGHT)
-					x += origWidth - _width;
-				else if (_autoSize == TextFieldAutoSize.CENTER)
-					x += (origWidth - _width) / 2;
+				// need to clip
+				//trace("clip");
+				var r:Rectangle = scrollRect;
+				if (!r)
+					r = new Rectangle();
+				r.left = 0;
+				r.top = 0;
+				r.right = _width;
+				r.bottom = _height;
+				scrollRect = r;
 			}
-			if (_height != origHeight || _width != origWidth || x != origX)
-				setFlag(FLAG_GRAPHICS_INVALID);
-		}
-		
-		if (_textWidth > origWidth || _textHeight > origHeight)
-		{
-			// need to clip
-			//trace("clip");
-			/*
-			if (border)
+			else 
 			{
-				// trying to match TextField behavior of border
-				r.width += 1;
-				r.height += 1;
-			}
-			*/
-			var r:Rectangle = scrollRect;
-			if (!r)
-				r = new Rectangle();
-			r.left = 0;
-			r.top = 0;
-			r.right = _width;
-			r.bottom = _height;
-			scrollRect = r;
-			setFlag(FLAG_HAS_SCROLL_RECT);
-		}
-		else 
-		{
-			// don't need to clip
-			//trace("don't clip");
-			if (testFlag(FLAG_HAS_SCROLL_RECT))
-			{
+				// don't need to clip
+				//trace("don't clip");
 				scrollRect = null;
-				clearFlag(FLAG_HAS_SCROLL_RECT);
 			}
 		}
 		

			throw new TypeError("Parameter text must be non-null.");
		}
		
		// FIXME (gosmith): Explain why we don't do this.		
		//    	if (value == htmlText)
		//    		return;
		
		_htmlText = value;
		

	 */
	public function get text():String
	{
		// When 'htmlText' is set, _text is nulled out
		// to indicate that it is invalid
		// and must be rexported from the TextFlow.
		if (_text == null)
		{
			// If we don't already have a TextFlow,
			// create one by importing the htmlText.
			if (!textFlow)
				textFlow = htmlImporter.importToFlow(_htmlText);

			// Export plain text from the TextFlow.
			_text = String(plainTextExporter.export(
				textFlow, ConversionType.STRING_TYPE));

			// Convert the LF characters that TLF exports
			// into CR characters.
			_text = _text.replace(ALL_LINEFEEDS, "\r");
		}
			
		return _text;
