Page Index Toggle Pages: 1 Send TopicPrint
Normal Topic Undo not working (Read 1099 times)
kwinovich
YaBB Newbies
*
Offline


I love YaBB 1G - SP1!

Posts: 2
Joined: Mar 24th, 2008
Undo not working
Aug 1st, 2008 at 8:14pm
Print Post  
I cant seem to get Undo to work properly when manipulating controlpoints via code. Code is below. Any ideas?

       private void diagram1_LinkStartModifying(object sender, LinkValidationEventArgs e)
       {
           composite = new CompositeCmd(diagram1, "drag");
           if ((int)e.Link.Tag == 2)
           {

               foreach (DiagramLink dl in diagram1.Links)
               {
                   if ((int)dl.Tag == 1)
                   {
                       change = new ChangeItemCmd(dl, "Change");
                       composite.AddSubCmd(change);
                   }
               }
           } 
       }

       private void diagram1_LinkModified(object sender, LinkEventArgs e)
       {   
           composite.Execute();
       }

       private void diagram1_LinkModifying(object sender, LinkValidationEventArgs e)
       {
           if ((int)e.Link.Tag == 2)
           {
               foreach (DiagramLink dl in diagram1.Links)
               {
                   if ((int)dl.Tag == 1)
                   {
                       dl.ControlPoints[dl.ControlPoints.Count - 1] = e.Link.ControlPoints[0];
                       change.Execute();
                       dl.UpdateFromPoints();
                       dv.RecreateCacheImage();
                   }
               }
           }
       }

       private void button7_Click(object sender, EventArgs e)
       {
           diagram1.UndoManager.Undo();
       }
  
Back to top
 
IP Logged
 
Iva
Junior Member
**
Offline


MindFusion support

Posts: 55
Joined: Aug 6th, 2005
Re: Undo not working
Reply #1 - Aug 4th, 2008 at 6:43am
Print Post  
Try this -

private List<ChangeItemCmd> changeCmds;
private void diagram_LinkStartModifying(object sender, LinkValidationEventArgs e)
{
     changeCmds = new List<ChangeItemCmd>();
     if ((int)e.Link.Tag == 2)
     {
           foreach (DiagramLink dl in diagram.Links)
           {
                 if ((int)dl.Tag == 1)
                 {
                       ChangeItemCmd change = new ChangeItemCmd(dl, "Change");
                       changeCmds.Add(change);
                 }
           }
     }
}

private void diagram_LinkModifying(object sender, LinkValidationEventArgs e)
{
     if ((int)e.Link.Tag == 2)
     {
           foreach (DiagramLink dl in diagram.Links)
           {
                 if ((int)dl.Tag == 1)
                 {
                       dl.ControlPoints[dl.ControlPoints.Count - 1] = e.Link.ControlPoints[0];
                       dl.UpdateFromPoints();
                       diagramView.RecreateCacheImage();
                 }
           }
     }
}

private void diagram_ActionRecorded(object sender, UndoEventArgs e)
{
     if (e.Command is ModifyItemCmd)
     {
           foreach (ChangeItemCmd cmd in changeCmds)
           cmd.Execute();
     }
}

Regards,
Iva
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint