private void Modify(ref CMacro cm_drag, ref CMacro cm_drop, DragEventArgs e) { if (cm_drag == cm_drop) // No effect, but just in case return; #region Swap/Copy Drag & Drop Macros and update if ((cm_drag != null) && (cm_drop != null)) { LogMessage.Log("..DragDrop START:{0} Macro src:{1} dest:{2}", e.Effect, cm_drag.Name, cm_drop.Name); if (e.Effect == DragDropEffects.Link) { if (Swap(ref cm_drop, ref cm_drag)) { // if Swap is successful // update node names cm_drag.thisNode.Text = cm_drag.DisplayName(); cm_drop.thisNode.Text = cm_drop.DisplayName(); } } else if (e.Effect == DragDropEffects.Copy) { if (cm_drop.CopyFrom(cm_drag)) { // if Copy is successful // Update node name // and set Changed true on the Drops macrofile (not handled by copy) cm_drop.thisNode.Text = cm_drop.DisplayName(); CMacroFile cmf_drop = FindMacroFileByNode(cm_drop.thisNode); if (cmf_drop != null) cmf_drop.Changed = true; } } LogMessage.Log("..DragDrop END:{0} Macro src:{1} dest:{2}", e.Effect, cm_drag.Name, cm_drop.Name); } else LogMessage.Log("....Modify(): Swap Macro, one of the two is null"); #endregion }
private bool Swap(ref CMacro cm_drop, ref CMacro cm_drag) { if ((cm_drop == null) || (cm_drag == null)) return false; CMacro tmp = new CMacro(); tmp.CopyFrom(cm_drop); cm_drop.CopyFrom(cm_drag); cm_drag.CopyFrom(tmp); CMacroFile cmf_drop = FindMacroFileByNode(cm_drop.thisNode), cmf_drag = FindMacroFileByNode(cm_drag.thisNode); if (cmf_drop != null) { cmf_drop.Changed = true; } if (cmf_drag != null) { cmf_drag.Changed = true; } return true; }