make step edit cursor follow zoom (and change its color a bit)
[ardour.git] / gtk2_ardour / region_gain_line.cc
index 00352c96df7992b8418dca1e97ed137d4c8bfa2e..30e19ec24a13efd122d0acda44dd6513393e0e83 100644 (file)
@@ -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"
@@ -50,9 +51,12 @@ AudioRegionGainLine::AudioRegionGainLine (const string & name, AudioRegionView&
 }
 
 void
-AudioRegionGainLine::start_drag (ControlPoint* cp, nframes_t x, float fraction)
+AudioRegionGainLine::start_drag_single (ControlPoint* cp, double x, float fraction)
 {
-       AutomationLine::start_drag (cp, x, 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));
                rv.audio_region()->set_envelope_active(false);
@@ -71,10 +75,9 @@ AudioRegionGainLine::remove_point (ControlPoint& cp)
        XMLNode &before = alist->get_state();
 
        if (!rv.audio_region()->envelope_active()) {
-               XMLNode &region_before = rv.audio_region()->get_state();
+                rv.audio_region()->clear_history ();
                rv.audio_region()->set_envelope_active(true);
-               XMLNode &region_after = rv.audio_region()->get_state();
-               trackview.session()->add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), &region_before, &region_after));
+               trackview.session()->add_command(new StatefulDiffCommand (rv.audio_region()));
        }
 
        alist->erase (mr.start, mr.end);
@@ -85,13 +88,13 @@ AudioRegionGainLine::remove_point (ControlPoint& cp)
 }
 
 void
-AudioRegionGainLine::end_drag (ControlPoint* cp)
+AudioRegionGainLine::end_drag ()
 {
        if (!rv.audio_region()->envelope_active()) {
                rv.audio_region()->set_envelope_active(true);
                trackview.session()->add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), 0, &rv.audio_region()->get_state()));
        }
 
-       AutomationLine::end_drag(cp);
+       AutomationLine::end_drag ();
 }