diff options
author | nick_m <mainsbridge@gmail.com> | 2015-06-17 00:39:20 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2015-06-17 09:54:22 +1000 |
commit | 15336d06e41fed130f1a0db9eee07b74546c7d92 (patch) | |
tree | 4ca2090c629b1e80c7d392603a83e7f603e50a8b /libs/ardour/automation_control.cc | |
parent | 15819f0896795b269811805546ea7621cb9ca213 (diff) |
Add undo for automation write.
Diffstat (limited to 'libs/ardour/automation_control.cc')
-rw-r--r-- | libs/ardour/automation_control.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/libs/ardour/automation_control.cc b/libs/ardour/automation_control.cc index 4ece790248..f2361c2b30 100644 --- a/libs/ardour/automation_control.cc +++ b/libs/ardour/automation_control.cc @@ -116,8 +116,16 @@ AutomationControl::set_automation_style (AutoStyle as) void AutomationControl::start_touch(double when) { - if (!_list) return; + if (!_list) { + return; + } + if (!touching()) { + + if (alist()->automation_state() == Write) { + _before = &alist ()->get_state (); + } + if (alist()->automation_state() == Touch) { /* subtle. aligns the user value with the playback */ set_value (get_value ()); @@ -137,13 +145,20 @@ AutomationControl::stop_touch(bool mark, double when) if (!_list) return; if (touching()) { set_touching (false); + + if (alist()->automation_state() == Write) { + _session.begin_reversible_command (string_compose (_("write %1 automation"), name ())); + _session.add_command (new MementoCommand<AutomationList> (*alist ().get (), _before, &alist ()->get_state ())); + _session.commit_reversible_command (); + } + if (alist()->automation_state() == Touch) { alist()->stop_touch (mark, when); if (!_desc.toggled) { AutomationWatch::instance().remove_automation_watch (shared_from_this()); } - _session.begin_reversible_command (_("record automation controller")); + _session.begin_reversible_command (string_compose (_("touch %1 automation"), name ())); _session.add_command (new MementoCommand<AutomationList> (*alist ().get (), _before, &alist ()->get_state ())); _session.commit_reversible_command (); } |