 
     inEditAttribute = true;
 
-    // Store old values so that PostEditAttribute can create undo actions
     Array<Variant> oldValues;
-    for (uint i = 0; i < serializables.length; ++i)
-        oldValues.Push(serializables[i].attributes[index]);
+    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();
-
-    // Do the editor post logic after attribute has been modified.
-    PostEditAttribute(serializables, index, oldValues);
+	    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;
-}
+	    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;

    {
        LineEdit@ attrEdit = CreateAttributeLineEdit(parent, serializables, index, subIndex);
        attrEdit.vars["Coordinate"] = i;
        SubscribeToEvent(attrEdit, "TextChanged", "EditAttribute");
        SubscribeToEvent(attrEdit, "TextFinished", "EditAttribute");
    }

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

WeakHandle testAnimState;

bool dragEditAttribute = false;

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