 
             invalidateDisplayList();
             
-            if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-            {
-                 if (toggle)
-                    dispatchEvent(new Event(Event.CHANGE));
-            }
-            else
-            {
-                if (toggle && !isProgrammatic)
-                    dispatchEvent(new Event(Event.CHANGE));
-            }
+            if (toggle && !isProgrammatic)
+                dispatchEvent(new Event(Event.CHANGE));
+            
             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
         }
     }

            toggleChanged = false;
        }
    }

    /**
     *  @private 
     *  Old version of the measure function
     */
    private function previousVersion_measure():void
    {
        super.measure();

        var textWidth:Number = 0;
        var textHeight:Number = 0;

        if (label)
        {
            var lineMetrics:TextLineMetrics = measureText(label);
            textWidth = lineMetrics.width;
            textHeight = lineMetrics.height;

            var paddingLeft:Number = getStyle("paddingLeft");
            var paddingRight:Number = getStyle("paddingRight");
            var paddingTop:Number = getStyle("paddingTop");
            var paddingBottom:Number = getStyle("paddingBottom");

            textWidth += paddingLeft + paddingRight + getStyle("textIndent"); 
            textHeight += paddingTop + paddingBottom; 
        }

        // If the current skin defines a borderMetrics property,
        // then use it; otherwise, use a default value.
        var bm:EdgeMetrics;
        try
        {
            bm = currentSkin["borderMetrics"];
        }
        catch(e:Error)
        {
            bm = new EdgeMetrics(3, 3, 3, 3);
        }
    
        var tempCurrentIcon:IFlexDisplayObject = getCurrentIcon();  
        var iconWidth:Number = tempCurrentIcon ? tempCurrentIcon.width : 0;
        var iconHeight:Number = tempCurrentIcon ? tempCurrentIcon.height : 0;

        var w:Number = 0;
        var h:Number = 0;

        if (labelPlacement == ButtonLabelPlacement.LEFT ||
            labelPlacement == ButtonLabelPlacement.RIGHT)
        {
            w = textWidth + iconWidth;
            if (iconWidth != 0)
            {
                var horizontalGap:Number = getStyle("horizontalGap");
                w += (horizontalGap - 2 );
            }
            h = Math.max(textHeight, iconHeight + 6);
        }
        else
        {
            w = Math.max(textWidth, iconWidth);
            h = textHeight + iconHeight;
            if (iconHeight != 0)
                h += getStyle("verticalGap");
        }

        if (bm)
        {
            w += bm.left + bm.right;
            h += bm.top + bm.bottom
        }

        // Pad with additional spacing, but only if we have a label.
        if (label && label.length != 0)
            w += extraSpacing;
        else
            w += 6;

        // Use the larger of the measured sizes and the skin's preferred sizes.
        // Each skin should override measure() with their measuredWidth
        // and measuredHeight.
        if (currentSkin && (isNaN(skinMeasuredWidth) || isNaN(skinMeasuredHeight)))
        {
            skinMeasuredWidth = currentSkin.measuredWidth;
            skinMeasuredHeight = currentSkin.measuredHeight;
        }

        if (!isNaN(skinMeasuredWidth))
            w = Math.max(skinMeasuredWidth, w);

        if (!isNaN(skinMeasuredHeight))
            h = Math.max(skinMeasuredHeight, h);

        measuredMinWidth = measuredWidth = w;
        measuredMinHeight = measuredHeight = h;
    }
    
    /**
     *  @private
     */
    override protected function measure():void
    {
        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
        {
            previousVersion_measure();
            return;
        }
        
        super.measure();

        var textWidth:Number = 0;

        checkedDefaultSkin = false;
        defaultSkinUsesStates = false;
        
        if (initialized)
        {
            viewSkin();
            invalidateSize();
