      */ 
     override protected function commitProperties():void
     {
+        // make sure itemIndex is correct before the base class does any computation
+        // based on it
         if (listData)
         {
-            // make sure itemIndex is correct before the base class does any computation
-            // based on it
             var listBase:mx.controls.listClasses.ListBase = mx.controls.listClasses.ListBase(listData.owner);
             itemIndex = listData.rowIndex + listBase.verticalScrollPosition;
         }
-
+        
+        // Validate renderer state prior to super.commitProperties.
+        if (rendererStateChanged && listBase)
+        {
+            rendererStateChanged = false;
+            showsCaret = listBase.isItemShowingCaret(data);
+            selected = listBase.isItemSelected(data);
+            super.hovered = listBase.isItemHighlighted(data);
+        }
+    
         super.commitProperties();
     }
 

        if (listData)
        {
            // see if we need to change state.  This is the only invalidation method guaranteed to be
            // called.  We set up the renderers properties here so no matter what validation method gets
            // called first, the properties are set up accordingly.
            var listBase:mx.controls.listClasses.ListBase = mx.controls.listClasses.ListBase(listData.owner);
            if (listBase)
            {
                showsCaret = listBase.isItemShowingCaret(data);
                selected = listBase.isItemSelected(data);
                super.hovered = listBase.isItemHighlighted(data);
            }
        }


        focusEnabled = false;
    }
    
    //--------------------------------------------------------------------------
    //
    //  Variables
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     *  Flag to help us determine if we need to validate renderer state during
     *  commitProperties.
     */
    private var rendererStateChanged:Boolean;
    
    //----------------------------------
    //  listData
    //----------------------------------
