diff options
Diffstat (limited to 'gtk2_ardour/region_gain_line.cc')
-rw-r--r-- | gtk2_ardour/region_gain_line.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc index 827562524e..30e19ec24a 100644 --- a/gtk2_ardour/region_gain_line.cc +++ b/gtk2_ardour/region_gain_line.cc @@ -19,6 +19,7 @@ #include "evoral/Curve.hpp" #include "pbd/memento_command.h" +#include "pbd/stateful_diff_command.h" #include "ardour/audioregion.h" #include "ardour/session.h" @@ -53,6 +54,8 @@ void AudioRegionGainLine::start_drag_single (ControlPoint* cp, double x, float fraction) { AutomationLine::start_drag_single (cp, x, fraction); + + // XXX Stateful need to capture automation curve data if (!rv.audio_region()->envelope_active()) { trackview.session()->add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), &rv.audio_region()->get_state(), 0)); @@ -72,10 +75,9 @@ AudioRegionGainLine::remove_point (ControlPoint& cp) XMLNode &before = alist->get_state(); if (!rv.audio_region()->envelope_active()) { - XMLNode ®ion_before = rv.audio_region()->get_state(); + rv.audio_region()->clear_history (); rv.audio_region()->set_envelope_active(true); - XMLNode ®ion_after = rv.audio_region()->get_state(); - trackview.session()->add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), ®ion_before, ®ion_after)); + trackview.session()->add_command(new StatefulDiffCommand (rv.audio_region())); } alist->erase (mr.start, mr.end); |