                 var pos:Point = itemRendererToIndices(IListItemRenderer(target));
                 if (pos && pos.y >= 0 && editable && displayableColumns[pos.x].editable && !dontEdit)
                 {
-                    dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
-                    // ITEM_EDIT events are cancelable
-                    dataGridEvent.columnIndex = displayableColumns[pos.x].colNum;
-                    dataGridEvent.dataField = displayableColumns[pos.x].dataField;
-                    dataGridEvent.rowIndex = pos.y;
-                    dataGridEvent.itemRenderer = IListItemRenderer(target);
-                    dispatchEvent(dataGridEvent);
+                    beginningEdit(displayableColumns[pos.x].colNum, pos.y, IListItemRenderer(target));
                 }
             }
             // trace("subcomponent got focus ignoring");

            {
                if (displayableColumns[pos.x].editable)
                {
                    dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
                    // ITEM_EDIT events are cancelable
                    dataGridEvent.columnIndex = displayableColumns[pos.x].colNum;
                    dataGridEvent.dataField = displayableColumns[pos.x].dataField;
                    dataGridEvent.rowIndex = pos.y;
                    dataGridEvent.itemRenderer = lastItemDown;
                    dispatchEvent(dataGridEvent);
                }
                else
                    // if the item is not editable, set lastPosition to it any
                    // so future tabbing starts from there
                    lastEditedItemPosition = { columnIndex: pos.x, rowIndex: pos.y };
            }
        }


            itemEditorInstance = null;
            _editedItemPosition = null;
        }
    }

    /**
     *  @private
     *  dispatch an ITEM_EDIT_BEGINNING event;
     */
    private function beginningEdit(columnIndex:int, rowIndex:int, itemRenderer:IListItemRenderer = null):void
    {
        var dataGridEvent:DataGridEvent =
            new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
            // ITEM_EDIT events are cancelable
        dataGridEvent.columnIndex = columnIndex;
        dataGridEvent.dataField = _columns[columnIndex].dataField;
        dataGridEvent.rowIndex = rowIndex;
        dataGridEvent.itemRenderer = itemRenderer;
        if (!dispatchEvent(dataGridEvent))
            lastEditedItemPosition = { columnIndex: columnIndex, rowIndex: rowIndex };

    }

    /**
