                     }
                     else if (isCellSelectionMode() && grid.caretColumnIndex != -1)
                     {
+                            op = selectionMode == GridSelectionMode.SINGLE_CELL ?
+                            GridSelectionEventKind.SET_CELL :
+                            GridSelectionEventKind.ADD_CELL;
+
                         // Add the cell and leave the caret position unchanged.
                         if (!commitInteractiveSelection(
-                            GridSelectionEventKind.ADD_CELL, 
-                            grid.caretRowIndex, grid.caretColumnIndex))
+                            op, grid.caretRowIndex, grid.caretColumnIndex))
                         {
                             return;
                         }

            {
                if (isCellSelectionMode())
                {
                    if (!inRows && grid.caretColumnIndex > 0)
                        caretColumnIndex--;
                }
                break;

        const rowCount:int = getDataProviderLength();
        const columnCount:int = getColumnsLength();
        var visibleRows:Vector.<int>;
        var caretRowBounds:Rectangle;
        
        switch (navigationUnit)
        {
