         }
         
         dataGrid.endItemEditorSession();
+        
         // set focus back to the grid so grid logic will deal if focus doesn't
         // end up somewhere else
-        deferFocus();
+        dataGrid.setFocus();
     }
 
     private function editorOwnsClick(event:Event):Boolean

            return;
        
        var col:GridColumn = grid.columns.getItemAt(columnIndex) as GridColumn;
        var item:IVisualElement = grid.getItemRendererAt(rowIndex, columnIndex);
        var cellBounds:Rectangle = grid.getCellBounds(rowIndex,columnIndex);
        
        // convert the row origin from the grid to the editor layer.

    private function wasCellPreviouslySelected(rowIndex:int, columnIndex:int):Boolean
    {
        if (dataGrid.isRowSelectionMode())
            return dataGrid.selectionContainsIndex(rowIndex);
        else if (dataGrid.isCellSelectionMode())
            return dataGrid.selectionContainsCell(rowIndex, columnIndex);
        
        return false;
    }

    /**
     *  @private
     *
     *  Determine if a cell position is valid.
     * 
     *  @return true if valid, false otherwise.  
     */
    private function isValidCellPosition(rowIndex:int, cellIndex:int):Boolean
    {
        if (rowIndex >= 0 && rowIndex < dataGrid.dataProvider.length &&
            cellIndex >= 0 && cellIndex < dataGrid.columns.length)
        { 
            return true;
        }
        
        return false;
    }
    
    /**
     *  @private
     *  
