 
         if (!noEvent)
         {
-            dispatchEvent(new FlexEvent(value ?
-                                        FlexEvent.SHOW :
-                                        FlexEvent.HIDE));
+            var eventType:String = value ? FlexEvent.SHOW :FlexEvent.HIDE;
+            
+            if (hasEventListener(eventType))
+                dispatchEvent(new FlexEvent(eventType));
         }
     }
 


/**
 *  Dispatched when an object's state changes from invisible to visible.
 *
 *  @eventType mx.events.FlexEvent.SHOW
 *  


/**
 *  Dispatched when an object's state changes from visible to invisible.
 * 
 *  <p>This event is only dispatched when there are one or more relevant listeners 
 *  attached to the dispatching object.</p>
 *
 *  @eventType mx.events.FlexEvent.HIDE
 *  
