update region-gain-line time-converter. fixes #6293
authorRobin Gareus <robin@gareus.org>
Thu, 30 Apr 2015 20:54:18 +0000 (22:54 +0200)
committerRobin Gareus <robin@gareus.org>
Thu, 30 Apr 2015 20:54:18 +0000 (22:54 +0200)
gtk2_ardour/region_gain_line.cc
gtk2_ardour/region_gain_line.h

index cbeb1224afa26463c15cc0568ecb652a09c8bb88..5ac985fa9a29b8ab680c7af44bd88d828933be39 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "time_axis_view.h"
 #include "editor.h"
+#include "gui_thread.h"
 
 #include "i18n.h"
 
@@ -46,6 +47,8 @@ AudioRegionGainLine::AudioRegionGainLine (const string & name, AudioRegionView&
 
        _time_converter->set_origin_b (r.region()->position() - r.region()->start());
 
+       r.region()->PropertyChanged.connect (_region_changed_connection, invalidator (*this), boost::bind (&AudioRegionGainLine::region_changed, this, _1), gui_context());
+
        group->raise_to_top ();
        group->set_y_position (2);
        set_uses_gain_mapping (true);
@@ -96,3 +99,15 @@ AudioRegionGainLine::end_drag (bool with_push, uint32_t final_index)
        AutomationLine::end_drag (with_push, final_index);
 }
 
+void
+AudioRegionGainLine::region_changed (const PropertyChange& what_changed)
+{
+       PropertyChange interesting_stuff;
+
+       interesting_stuff.add (ARDOUR::Properties::start);
+       interesting_stuff.add (ARDOUR::Properties::position);
+
+       if (what_changed.contains (interesting_stuff)) {
+               _time_converter->set_origin_b (rv.region()->position() - rv.region()->start());
+       }
+}
index 1395bc3f6f07c49cc705a5a843fbbad6c957d2d1..683537ee69aea71fb2287bfbf70db9d7e7103248 100644 (file)
@@ -42,7 +42,10 @@ class AudioRegionGainLine : public AutomationLine
 
        void remove_point (ControlPoint&);
 
+
 private:
+       PBD::ScopedConnection _region_changed_connection;
+       void region_changed (const PBD::PropertyChange& what_changed);
        AudioRegionView& rv;
 };