             oldScaleY = scaleY;
         }
         
-        // FIXME(hmuller) - if this component's layout has changed, or its parent 
-        // layout has changed, or if its layout no longer matches one of
-        // its non-UIComponent children, then we need to validateLayoutDirection().
-        if (true)
-        {
-            invalidateLayoutDirection();
+        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
+        {
+            // If this component's layout direction has changed, or its parent's layoutDirection
+            // has changed, then call invalidateLayoutDirection().
+            
+            const thisLayoutDirection:String = layoutDirection;
+            const parentUIC:UIComponent = parent as UIComponent;
+            
+            if ((oldLayoutDirection != layoutDirection) ||
+                (parentUIC && (parentUIC.layoutDirection != parentUIC.oldLayoutDirection)))
+                invalidateLayoutDirection();
         }
         
         // Typically state changes occur immediately, but during

    }
    
    /**
     * @copy mx.core.ILayoutDirection#invalidateLayoutDirection()  
     */
    public function invalidateLayoutDirection():void
    {
        const parentElt:ILayoutDirection = parent as ILayoutDirection;        
        const thisLayoutDirection:String = layoutDirection;
        
        // If this element's layoutDirection doesn't match its parent's, then

        
        for (var i:int = 0; i < thisContainerNumElements; i++)
        {
            var elt:IVisualElement = thisContainer.getElementAt(i);
            if (!(elt is IStyleClient)) 
                elt.invalidateLayoutDirection();
        }        
    }        

