             {
                 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 = r;
-                    dispatchEvent(dataGridEvent);
+                    beginningEdit(displayableColumns[pos.x].colNum, pos.y, r);
                 }
                 else
-                    // if the item is not editable, set lastPosition to it any
+                    // if the item is not editable, set lastPosition to it anyways
                     // so future tabbing starts from there
-                    lastEditedItemPosition = { columnIndex: pos.x, rowIndex: pos.y };
+                    lastEditedItemPosition = { columnIndex: displayableColumns[pos.x].colNum, rowIndex: pos.y };
             }
         }
         else if (lastItemDown && lastItemDown != itemEditorInstance)

                if (!itemEditorInstance || endEdit(reason))
                {
                    // send event to create the new one
                    var dataGridEvent:DataGridEvent =
                        new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
                        // ITEM_EDIT events are cancelable
                    dataGridEvent.columnIndex = colIndex;
                    dataGridEvent.dataField = _columns[colIndex].dataField;
                    dataGridEvent.rowIndex = index;
                    dispatchEvent(dataGridEvent);
                }
            }
        }

        {
            actualContentHolder.setChildIndex(DisplayObject(itemEditorInstance),
                                      actualContentHolder.numChildren - 1);
            var col:DataGridColumn;
            if (lockedColumnCount && editedItemPosition.columnIndex && visibleLockedColumns[lockedColumnCount - 1].colNum)
                col = visibleLockedColumns[actualColIndex];
            else
                col = visibleColumns[actualColIndex];

            var item:IListItemRenderer = actualContentHolder.listItems[actualRowIndex][actualColIndex];
            var rowData:ListRowInfo = actualContentHolder.rowInfo[actualRowIndex];
