 
     /**
      *  @private
-     */
-    private function scaleChangedHandler(event:Event):void
-    {
-        // This is called whenever scaleX or scaleY is changed.
-        // We need to clear out the preferredWidth/preferredHeight
-        // of our children since scaling can cause rounding errors
-        // which then are not corrected when un-scaled.
-
+     *  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;

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;


        // Set tabEnabled to false so individual buttons don't get focus.
        newButton.focusEnabled = false;
        newButton.label = label;
        newButton.setStyle("icon", icon);
        newButton.addEventListener(MouseEvent.CLICK, clickHandler);

        addChild(newButton);

        recalcButtonWidths = recalcButtonHeights = true;

        return newButton;
    }

    /**
     *  @private
     */
    override protected function resetNavItems():void
    {
        var buttonStyleName:String = getStyle(buttonStyleNameProp);
        var firstButtonStyleName:String = getStyle(firstButtonStyleNameProp);
        var lastButtonStyleName:String = getStyle(lastButtonStyleNameProp);
