     
     private function awm_activatedFormHandler(event:DynamicEvent):void
     {
+        updateWatchedForms();
         updateProxyImageForTopmostForm();
     }
     
     private function awm_deactivatedFormHandler(event:DynamicEvent):void
     {
+        updateWatchedForms();
+        
         // When the ActiveWindowManager dispatches the deactivatedForm event,
         // its internal list of forms has not been updated yet. So, determining
         // the topmost form from that list will fail and find the old topmost

     */ 
    override public function setFocus():void
    {
        // Do not set focus if the StageText is invisible (it has been replaced
        // 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,

            -1;
    }
    
    private function getGlobalViewPort():Rectangle
    {
        // We calculate the parent's concatenated matrix to deal with
        // issues in the runtime where the concatenated matrix of the
        // parent is out of sync.  See SDK-31538.
        var m:Matrix = MatrixUtil.getConcatenatedMatrix(parent, stage);
        var globalTopLeft:Point = m.transformPoint(localViewPort.topLeft);
        
        // Transform the bottom-right corner of the local rect
        // instead of setting width/height to account for any
        // transformations applied to ancestor objects.
        var globalBottomRight:Point = m.transformPoint(localViewPort.bottomRight);
        var globalRect:Rectangle = new Rectangle();
        
        // StageText can't deal with upside-down or mirrored rectangles
        // or non-integer values. Fix those here.
        globalRect.x = Math.floor(Math.min(globalTopLeft.x, globalBottomRight.x));
        globalRect.y = Math.floor(Math.min(globalTopLeft.y, globalBottomRight.y));
        globalRect.width = Math.ceil(Math.abs(globalBottomRight.x - globalTopLeft.x));
        globalRect.height = Math.ceil(Math.abs(globalBottomRight.y - globalTopLeft.y));

        return globalRect;
    }
    
    private function hasOverlappingForm():Boolean
    {
        if (!localViewPort || !parent || !stageText || !awm)
            return false;
        
        var globalRect:Rectangle = getGlobalViewPort();
        var result:Boolean = false;
        
        for each (var otherForm:Object in awm.forms)
        {
            var otherFormDisplayObj:DisplayObject = otherForm as DisplayObject;
            
            if (otherFormDisplayObj && 
                (!otherForm.hasOwnProperty("focusManager") || otherForm.focusManager != focusManager))
            {
                var formGlobalRect:Rectangle = otherFormDisplayObj.getBounds(stage);
                
                if (formGlobalRect.intersects(globalRect))
                {
                    result = true;
                    break;
                }
            }
        }
        
        return result;
    }
    
    /**
     *  Determine whether the given form is an application. This is the same
     *  check as is used by ActiveWindowManager.
