             styleProp == firstButtonStyleNameProp ||
             styleProp == lastButtonStyleNameProp)
         {
-            var buttonStyleName:String = getStyle(buttonStyleNameProp);
-            var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp);
-            var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp);
-            
-            if (!buttonStyleName)
-                buttonStyleName = "ButtonBarButton";
-            if (!firstButtonStyleName)
-                firstButtonStyleName = buttonStyleName;
-            if (!lastButtonStyleName)
-                lastButtonStyleName = buttonStyleName;
-            
-            var newStyleName:String;
-            
-            var n:int = numChildren;
-            for (var i:int = 0; i < n; i++)
-            {
-                if (i == 0)
-                    newStyleName = firstButtonStyleName;
-                else if (i == (n - 1))
-                    newStyleName = lastButtonStyleName;
-                else
-                    newStyleName = buttonStyleName;
-                
-                Button(getChildAt(i)).styleName = newStyleName;
-            }
-            
+            resetNavItems();
+        }
+        else if (styleProp == buttonWidthProp)
+        {
+            recalcButtonWidths = true;
+        }
+        else if (styleProp == buttonHeightProp)
+        {
+            recalcButtonHeights = true;
+        }
+        else if (StyleManager.isInheritingStyle(styleProp) && 
+            StyleManager.isSizeInvalidatingStyle(styleProp))
+        {
             recalcButtonWidths = recalcButtonHeights = true;
-        }
-
-        if (styleProp == buttonWidthProp)
-            recalcButtonWidths = true;
-        else if (styleProp == buttonHeightProp)
-            recalcButtonHeights = true;
-            
+        }        
     }
 
     /**

import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
import mx.containers.BoxDirection;
import mx.controls.buttonBarClasses.ButtonBarButton;
import mx.core.ClassFactory;


    /**
     *  @private
     *  Reset buttons widths so that it can be recalculated.
     */
    protected function resetButtonWidths():void
    {
        for (var i:int = 0; i < numChildren; i++)
        {
            var child:Button = getChildAt(i) as Button;
