Remove inclusion of ardour_ui.h from ui_config.cc
[ardour.git] / libs / pbd / undo.cc
index 120f62c3512c78d263ae48a3aa6e9990b6eea30b..182773ee4925c2811074a9420385b22afbfe4906 100644 (file)
@@ -18,7 +18,6 @@
     $Id$
 */
 
-#include <iostream>
 #include <string>
 #include <sstream>
 #include <time.h>
@@ -41,6 +40,7 @@ UndoTransaction::UndoTransaction (const UndoTransaction& rhs)
        : Command(rhs._name)
        , _clearing(false)
 {
+        _timestamp = rhs._timestamp;
        clear ();
        actions.insert(actions.end(),rhs.actions.begin(),rhs.actions.end());
 }
@@ -220,6 +220,13 @@ UndoHistory::add (UndoTransaction* const ut)
        }
 
        UndoList.push_back (ut);
+       /* Adding a transacrion makes the redo list meaningless. */
+       _clearing = true;
+       for (std::list<UndoTransaction*>::iterator i = RedoList.begin(); i != RedoList.end(); ++i) {
+                delete *i;
+        }
+       RedoList.clear ();
+       _clearing = false;
 
        /* we are now owners of the transaction and must delete it when finished with it */
 
@@ -294,6 +301,9 @@ void
 UndoHistory::clear_redo ()
 {
        _clearing = true;
+        for (std::list<UndoTransaction*>::iterator i = RedoList.begin(); i != RedoList.end(); ++i) {
+                delete *i;
+        }
        RedoList.clear ();
        _clearing = false;
 
@@ -305,6 +315,9 @@ void
 UndoHistory::clear_undo ()
 {
        _clearing = true;
+        for (std::list<UndoTransaction*>::iterator i = UndoList.begin(); i != UndoList.end(); ++i) {
+                delete *i;
+        }
        UndoList.clear ();
        _clearing = false;