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

     */ 
    override protected function commitProperties():void
    {
        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;
        }

        super.commitProperties();
    }


        if (listData)
        {
            // see if we need to change state.  This is the only invalidation method guaranteed to be
            // called. 
            var listBase:mx.controls.listClasses.ListBase = mx.controls.listClasses.ListBase(listData.owner);
            if (listBase)
            {
                if (showsCaret != listBase.isItemShowingCaret(data) ||
                    selected != listBase.isItemSelected(data) ||
                    super.hovered != listBase.isItemHighlighted(data))
                {
                    rendererStateChanged = true;
                    invalidateProperties();
                }
            }
        }

