         {
             pos = itemRendererToIndices(r);
 
-            if (pos && pos.y >= 0 && displayableColumns[pos.x].editable && !dontEdit)
-            {
-                advancedDataGridEvent = new AdvancedDataGridEvent(AdvancedDataGridEvent.ITEM_EDIT_BEGINNING, false, true);
-                // ITEM_EDIT events are cancelable
-                advancedDataGridEvent.columnIndex = displayableColumns[pos.x].colNum;
-                advancedDataGridEvent.dataField = displayableColumns[pos.x].dataField;
-                advancedDataGridEvent.rowIndex = pos.y;
-                advancedDataGridEvent.itemRenderer = r;
-                dispatchEvent(advancedDataGridEvent);
+            if (pos && pos.y >= 0 && !dontEdit)
+            {
+				if (displayableColumns[pos.x].editable)
+				{
+	                advancedDataGridEvent = new AdvancedDataGridEvent(AdvancedDataGridEvent.ITEM_EDIT_BEGINNING, false, true);
+	                // ITEM_EDIT events are cancelable
+	                advancedDataGridEvent.columnIndex = displayableColumns[pos.x].colNum;
+	                advancedDataGridEvent.dataField = displayableColumns[pos.x].dataField;
+	                advancedDataGridEvent.rowIndex = pos.y;
+	                advancedDataGridEvent.itemRenderer = r;
+	                dispatchEvent(advancedDataGridEvent);
+				}
+				else
+				{
+					// if the item is not editable, set lastPosition to it anyways
+					// so future tabbing starts from there
+					lastEditedItemPosition = { columnIndex: displayableColumns[pos.x].colNum, rowIndex: pos.y };
+				}
             }
         }
         else if (lastItemDown && lastItemDown != itemEditorInstance)

        }
        return newArray;
    }
    
    /**
     *  @private


import mx.collections.CursorBookmark;
import mx.collections.ICollectionView;
import mx.collections.ISort;
import mx.collections.ISortField;
import mx.collections.IViewCursor;
import mx.collections.ItemResponder;
import mx.collections.Sort;
import mx.collections.SortField;
import mx.collections.errors.ItemPendingError;
