projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove inclusion of ardour_ui.h from ui_config.cc
[ardour.git]
/
libs
/
pbd
/
undo.cc
diff --git
a/libs/pbd/undo.cc
b/libs/pbd/undo.cc
index 120f62c3512c78d263ae48a3aa6e9990b6eea30b..182773ee4925c2811074a9420385b22afbfe4906 100644
(file)
--- a/
libs/pbd/undo.cc
+++ b/
libs/pbd/undo.cc
@@
-18,7
+18,6
@@
$Id$
*/
$Id$
*/
-#include <iostream>
#include <string>
#include <sstream>
#include <time.h>
#include <string>
#include <sstream>
#include <time.h>
@@
-41,6
+40,7
@@
UndoTransaction::UndoTransaction (const UndoTransaction& rhs)
: Command(rhs._name)
, _clearing(false)
{
: Command(rhs._name)
, _clearing(false)
{
+ _timestamp = rhs._timestamp;
clear ();
actions.insert(actions.end(),rhs.actions.begin(),rhs.actions.end());
}
clear ();
actions.insert(actions.end(),rhs.actions.begin(),rhs.actions.end());
}
@@
-220,6
+220,13
@@
UndoHistory::add (UndoTransaction* const ut)
}
UndoList.push_back (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 */
/* 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;
UndoHistory::clear_redo ()
{
_clearing = true;
+ for (std::list<UndoTransaction*>::iterator i = RedoList.begin(); i != RedoList.end(); ++i) {
+ delete *i;
+ }
RedoList.clear ();
_clearing = false;
RedoList.clear ();
_clearing = false;
@@
-305,6
+315,9
@@
void
UndoHistory::clear_undo ()
{
_clearing = true;
UndoHistory::clear_undo ()
{
_clearing = true;
+ for (std::list<UndoTransaction*>::iterator i = UndoList.begin(); i != UndoList.end(); ++i) {
+ delete *i;
+ }
UndoList.clear ();
_clearing = false;
UndoList.clear ();
_clearing = false;