                                                         false);
                 return;
             }
-            else
+            else if (canEditColumn(grid.caretColumnIndex))
             {
                 dataGrid.startItemEditorSession(grid.caretRowIndex, grid.caretColumnIndex);                
             }

    /**
     *  @private
     *  Check if a mouse click occured within the editor.
     */ 
    private function editorOwnsClick(event:Event):Boolean
    {
        return (event is MouseEvent && 
            event.target is IUIComponent &&
            editorOwns(IUIComponent(event.target)));
    }
    
    /**
     *  @private
     *  Check if a mouse click occured within the editor. The editor can be either
     *  editedItemRenderer or itemEditorInstance.
     * 
     *  @param child - child to test.
     *  @return true if the child is owned by the editor.
     */ 
    private function editorOwns(child:IUIComponent):Boolean

 
    /**
     *  @private
     *  The IUIComponent related to a given object. If the object is not a IUIComponent
     *  then work up the display list until we find a IUIComponent. 
     *  @param  displayObject The object to get a IUIComponet from.
     *  @return returns the displayObject if it is a display object or its 
     *  closest parent that is a display object. 
     */ 
    private function getIUIComponent(displayObject:DisplayObject):IUIComponent
    {
        if (displayObject is IUIComponent)
            return IUIComponent(displayObject);
        
        var current:DisplayObject = displayObject.parent;
        while (current)
        {
            if (current is IUIComponent)
                return IUIComponent(current);
            
            current = current.parent;
        }
        
        return null;
    }
    
    /**
     *  @private
     * 
     *  Restore the focusable children flags.
     */ 
