         if (caretChanged)
         {
             // Validate values now.  Need to let caret be set in the same
-            // update as the dp and/or columns.  -1 is a valid value.
-            
-            // If adjusting the index, don't use the setter.  Need to preserve 
-            // the old caret index so it can be reported in the caret change 
-            // event.
+            // update as the dp and/or columns.  -1 is a valid value.            
             if (_dataProvider && caretRowIndex >= _dataProvider.length)
                 _caretRowIndex = _dataProvider.length - 1;
             if (_columns && caretColumnIndex >= _columns.length)

                _dataProvider.getItemAt(_caretRowIndex) : null;

            dispatchCaretChangeEvent();
            caretChanged = false;        
         }
    }

        if (_caretColumnIndex == value || value < -1)
            return;
        
        _caretColumnIndex = value;
        
        caretChanged = true;
