         if (elementChanged && requireSelection)
         {        
             var dataProviderLength:int = getGridDataProviderLength();
-            if (dataProviderLength > 0)
-            {
-                if (!hasCellSelection())
-                {
-                    rowIndex = firstRemoveIndex <= dataProviderLength - 1 ? 
-                               firstRemoveIndex : dataProviderLength - 1;
-                    setCell(rowIndex, 0);
-                }
+            if (dataProviderLength > 0 && selectionLength == 0)
+            {
+                rowIndex = firstRemoveIndex <= dataProviderLength - 1 ? 
+                           firstRemoveIndex : dataProviderLength - 1;
+                setCell(rowIndex, 0);
             }
         }            
 

        if (!validateIndex(rowIndex) )
            return false;
        
        if (requireSelection && containsOnlyRow(rowIndex))
            return false;
                            
        if (selectAllFlag)

            if (!hasRowSelection())
                selectionChanged = grid.setSelectedIndex(0);
        }
            else if (isCellSelectionMode())
        {
            if (!hasCellSelection())
                selectionChanged = grid.setSelectedCell(0, 0);
