                 kind = GridSelectionEventKind.SET_CELL;
         }
         
-        var changed:Boolean = 
+        var success:Boolean = 
             commitInteractiveSelection(kind, rowIndex, columnIndex);
         
-        // Update the caret even if the selection did not change.
-        commitCaretPosition(rowIndex, columnIndex);
-        
-        return changed;
+        // Update the caret if the selection was not cancelled.
+        if (success)
+            commitCaretPosition(rowIndex, columnIndex);
+        
+        return success;
     }
     
     /**

        if (selectionMode == GridSelectionMode.MULTIPLE_CELLS || 
            selectionMode == GridSelectionMode.MULTIPLE_ROWS)
        {
            commitInteractiveSelection(
                GridSelectionEventKind.SELECT_ALL,
                0, 0, dataProvider.length, columns.length);
            
            grid.anchorRowIndex = 0;
            grid.anchorColumnIndex = 0;
        }
    }
    

        else if (selectionMode == GridSelectionMode.SINGLE_CELL)
        {
            // Can't extend the selection so move it to the caret position.
            success = commitInteractiveSelection(
                GridSelectionEventKind.SET_CELL, 
                caretRowIndex, caretColumnIndex, 1, 1);                
        }
        
        // Update the caret.
        if (success)
            commitCaretPosition(caretRowIndex, caretColumnIndex);
        
        return success;
    }
    
    /**
