     {
         LineEdit@ attrEdit = CreateAttributeLineEdit(parent, serializables, index, subIndex);
         attrEdit.vars["Coordinate"] = i;
+
+	   Button@ tx = Button();
+	   tx.SetFixedHeight(ATTR_HEIGHT - 2);
+	   tx.SetFixedWidth(ATTR_HEIGHT);
+	   tx.SetAlignment(HA_RIGHT, VA_TOP);
+	   attrEdit.AddChild(tx);
+
+	   SubscribeToEvent(tx, "DragBegin", "LineDragBegin");
+	   SubscribeToEvent(tx, "DragMove", "LineDragMove");
+
         SubscribeToEvent(attrEdit, "TextChanged", "EditAttribute");
         SubscribeToEvent(attrEdit, "TextFinished", "EditAttribute");
     }

Array<String> noTextChangedAttrs = {"Script File", "Class Name", "Script Object Type", "Script File Name"};

WeakHandle testAnimState;

UIElement@ SetEditable(UIElement@ element, bool editable)
{


    inEditAttribute = true;

    Array<Variant> oldValues;
    if (!dragEditAttribute){
	    // Store old values so that PostEditAttribute can create undo actions
	    for (uint i = 0; i < serializables.length; ++i)
		    oldValues.Push(serializables[i].attributes[index]);
    }

    StoreAttributeEditor(parent, serializables, index, subIndex, coordinate);
    for (uint i = 0; i < serializables.length; ++i)
	    serializables[i].ApplyAttributes();

    //disable undo 
    if (!dragEditAttribute){
	    // Do the editor post logic after attribute has been modified.
	    PostEditAttribute(serializables, index, oldValues);
    }

    inEditAttribute = false;

    // If not an intermediate edit, reload the editor fields with validated values
    // (attributes may have interactions; therefore we load everything, not just the value being edited)
    if (!intermediateEdit)
	    attributesDirty = true;
}

void LineDragBegin(StringHash eventType, VariantMap& eventData){
	UIElement@ label = eventData["Element"].GetPtr();
	int x = eventData["X"].GetInt();
	label.vars["posX"] = x;

	//store value old value before dragging 
	dragEditAttribute = false;
	LineEdit@ selectedNumEditor = label.parent;
	//not convenient way to trigger EditAttribute event
	selectedNumEditor.text = selectedNumEditor.text;
}



void LineDragMove(StringHash eventTypem, VariantMap& eventData){
	UIElement@ label = eventData["Element"].GetPtr();
	LineEdit@ selectedNumEditor = label.parent;

	int x = eventData["X"].GetInt();
	int posx = label.vars["posX"].GetInt();
	float val = x - posx;

	float fieldVal = selectedNumEditor.text.ToFloat(); 
	fieldVal += val/100;
	label.vars["posX"] = x;
	selectedNumEditor.text = fieldVal;
	//disable storing undo 
	dragEditAttribute = true;
}


// Resource picker functionality
const uint ACTION_PICK = 1;
