         // by a proxy image). This component may be in a form that is lower in
         // z-order than the topmost form and we cannot allow the StageText,
         // which cannot clip, to appear above the topmost form.
-        if (effectiveEnabled && stageText != null && stageText.visible)
-            stageText.assignFocus();
+        if (effectiveEnabled && stageText != null)
+        {
+            if (stageText.visible)
+                stageText.assignFocus();
+            else
+                pendingFocusedStageText = stageText;
+        }
     }
     
     /**

                        // well if the soft keyboard is open. (If the soft keyboard is not
                        // open, do not restore focus because doing so will force the soft
                        // keyboard to open.)
                        if (stageText.visible && stageText == focusedStageText && 
                            stage.softKeyboardRect.height > 0)
                        {
                            stageText.assignFocus();
                        }
                        
                        // Do not remove the proxy bitmap until after stageText has been

            // well if the soft keyboard is open. (If the soft keyboard is not
            // open, do not restore focus because doing so will force the soft
            // keyboard to open.)
            if (stageTextVisible)
            {
                if (stageText == focusedStageText && stage.softKeyboardRect.height > 0 ||
                    stageText == pendingFocusedStageText)
                {
                    stageText.assignFocus();
                }
            }
            
            // Do not remove the proxy bitmap until after stageText has been
