fix logic in undo, redo, and swap_visual_state
authorBen Loftis <ben@glw.com>
Sun, 13 Sep 2009 19:44:55 +0000 (19:44 +0000)
committerBen Loftis <ben@glw.com>
Sun, 13 Sep 2009 19:44:55 +0000 (19:44 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@5661 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.cc

index 693ff746236d585f4849e32a23b8215d1324aaad..f5aa512eab85d055c490f6f2df3e67bd2774ba1d 100644 (file)
@@ -4375,10 +4375,11 @@ Editor::undo_visual_state ()
                return;
        }
 
+       redo_visual_stack.push_back (current_visual_state());
+
        VisualState* vs = undo_visual_stack.back();
        undo_visual_stack.pop_back();
        use_visual_state (*vs);
-       redo_visual_stack.push_back (vs);
 }
 
 void
@@ -4388,10 +4389,11 @@ Editor::redo_visual_state ()
                return;
        }
 
+       undo_visual_stack.push_back (current_visual_state());
+
        VisualState* vs = redo_visual_stack.back();
        redo_visual_stack.pop_back();
        use_visual_state (*vs);
-       undo_visual_stack.push_back (vs);
 }
 
 void
@@ -4401,6 +4403,7 @@ Editor::swap_visual_state ()
                redo_visual_state ();
        } else {
                undo_visual_state ();
+               undo_visual_stack.clear();  //swap_visual_state truncates the undo stack so we are just bouncing between 2 states
        }
 }