         invalidateSkinState();
      }
 
+    //----------------------------------
+    //  Mobile soft-keyboard hints
+    //----------------------------------
+    
+    //----------------------------------
+    //  autoCapitalize
+    //----------------------------------
+    
+    /**
+     *  Hint indicating what captialization behavior soft keyboards should
+     *  use. 
+     *
+     *  Supported values are defined in flash.text.AutoCapitalize:
+     *      "none" - no automatic capitalization
+     *      "word" - capitalize the first letter following any space or
+     *          punctuation
+     *      "sentence" - captitalize the first letter following any period
+     *      "all" - capitalize every letter
+     *
+     *  <p><b>For the Desktop theme, this is not supported.</b></p>
+     * 
+     *  @default "none"
+     * 
+     *  @langversion 3.0
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get autoCapitalize():String
+    {
+        var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+        
+        if (softKeyboardClient)
+            return softKeyboardClient.autoCapitalize; 
+        
+        var v:* = textDisplay ? undefined : textDisplayProperties.autoCapitalize;
+        return (v === undefined) ? "none" : v;
+    }
+    
+    public function set autoCapitalize(value:String):void
+    {
+        if (textDisplay)
+        {
+            var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+            
+            if (softKeyboardClient)
+                softKeyboardClient.autoCapitalize = value;
+            textDisplayProperties = BitFlagUtil.update(
+                uint(textDisplayProperties), 
+                AUTO_CAPITALIZE_FLAG, true);
+        }
+        else
+        {
+            textDisplayProperties.autoCapitalize = value;
+        }
+        
+        // Generate an UPDATE_COMPLETE event.
+        invalidateProperties();                    
+    }
+    
+    //----------------------------------
+    //  autoCorrect
+    //----------------------------------
+    
+    /**
+     *  Hint indicating whether a soft keyboard should use its auto-correct
+     *  behavior, if supported.
+     *  <p><b>For the Desktop theme, this is not supported.</b></p>
+     * 
+     *  @default false
+     *  
+     *  @langversion 3.0
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 4.5.2
+     */
+    public function get autoCorrect():Boolean
+    {
+        var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+        
+        if (softKeyboardClient)
+            return softKeyboardClient.autoCorrect; 
+        
+        var v:* = textDisplay ? undefined : textDisplayProperties.autoCorrect;
+        return (v === undefined) ? false : v;
+    }
+    
+    public function set autoCorrect(value:Boolean):void
+    {
+        if (textDisplay)
+        {
+            var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+            
+            if (softKeyboardClient)
+                softKeyboardClient.autoCorrect = value;
+            textDisplayProperties = BitFlagUtil.update(
+                uint(textDisplayProperties), 
+                AUTO_CORRECT_FLAG, true);
+        }
+        else
+        {
+            textDisplayProperties.autoCorrect = value;
+        }
+        
+        // Generate an UPDATE_COMPLETE event.
+        invalidateProperties();                    
+    }
+    
+    //----------------------------------
+    //  returnKeyLabel
+    //----------------------------------
+    
+    /**
+     *  Hint indicating what label should be displayed for the return key on
+     *  soft keyboards.
+     *
+     *  Supported values are defined in flash.text.ReturnKeyLabel:
+     *      "default" - default icon or label text
+     *      "done" - icon or label text indicating completed text entry
+     *      "go" - icon or label text indicating that an action should start
+     *      "next" - icon or label text indicating a move to the next field
+     *      "search" - icon or label text indicating that the entered text
+     *          should be searched for
+     *
+     *  <p><b>For the Desktop theme, this is not supported.</b></p>
+     * 
+     *  @default "default"
+     *  
+     *  @langversion 3.0
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 4.5.2
+     */
+    public function get returnKeyLabel():String
+    {
+        var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+        
+        if (softKeyboardClient)
+            return softKeyboardClient.returnKeyLabel; 
+        
+        var v:* = textDisplay ? undefined : textDisplayProperties.returnKeyLabel;
+        return (v === undefined) ? "default" : v;
+    }
+    
+    public function set returnKeyLabel(value:String):void
+    {
+        if (textDisplay)
+        {
+            var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+            
+            if (softKeyboardClient)
+                softKeyboardClient.returnKeyLabel = value;
+            textDisplayProperties = BitFlagUtil.update(
+                uint(textDisplayProperties), 
+                RETURN_KEY_LABEL_FLAG, true);
+        }
+        else
+        {
+            textDisplayProperties.returnKeyLabel = value;
+        }
+        
+        // Generate an UPDATE_COMPLETE event.
+        invalidateProperties();                    
+    }
+    
+    //----------------------------------
+    //  softKeyboardType
+    //----------------------------------
+    
+    /**
+     *  Hint indicating what kind of soft keyboard should be displayed for
+     *  this component.
+     *
+     *  Supported values are defined in flash.text.SoftKeyboardType:
+     *      "default" - the default keyboard
+     *      "punctuation" - puts the keyboard into punctuation/symbol entry
+     *          mode
+     *      "url" - present soft keys appropriate for URL entry, such as a
+     *          specialized key that inserts '.com'
+     *      "number" - puts the keyboard into numeric keypad mode
+     *      "contact" - puts the keyboard into a mode appropriate for
+     *          entering contact information
+     *      "email" - puts the keyboard into e-mail addres entry mode, which
+     *          may make it easier to enter '@' or '.com'
+     *
+     *  <p><b>For the Desktop theme, this is not supported.</b></p>
+     * 
+     *  @default "default" 
+     * 
+     *  @langversion 3.0
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 4.5.2
+     */
+    public function get softKeyboardType():String
+    {
+        var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+        
+        if (softKeyboardClient)
+            return softKeyboardClient.softKeyboardType; 
+        
+        var v:* = textDisplay ? undefined : textDisplayProperties.softKeyboardType;
+        return (v === undefined) ? "default" : v;
+    }
+    
+    public function set softKeyboardType(value:String):void
+    {
+        if (textDisplay)
+        {
+            var softKeyboardClient:ISoftKeyboardHintClient = textDisplay as ISoftKeyboardHintClient;
+            
+            if (softKeyboardClient)
+                softKeyboardClient.softKeyboardType = value;
+            textDisplayProperties = BitFlagUtil.update(
+                uint(textDisplayProperties), 
+                SOFT_KEYBOARD_TYPE_FLAG, true);
+        }
+        else
+        {
+            textDisplayProperties.softKeyboardType = value;
+        }
+        
+        // Generate an UPDATE_COMPLETE event.
+        invalidateProperties();                    
+    }
+    
     //--------------------------------------------------------------------------
     //
     //  Overridden methods

            WIDTH_IN_CHARS_PROPERTY_FLAG) && richEditableText)
        {
            newTextDisplayProperties.widthInChars = richEditableText.widthInChars;
        }
        
        // Switch from storing bit mask to storing properties.

     */
    override protected function getCurrentSkinState():String
    {
        var showPromptWhenFocused:Boolean = getStyle("showPromptWhenFocused");
        
        if ((showPromptWhenFocused || 
            focusManager && focusManager.getFocus() != focusManager.findFocusManagerComponent(this)) && 
            prompt != null && prompt != "")
        {
            if (text.length == 0)
