Remove LocaleGuard from ARDOUR::Route class
[ardour.git] / libs / ardour / midi_region.cc
index 2ce234b6341774efab7e888b41f23a609d3b8526..dc7293f7b5c1c3cca72e1b2a8070f9f105655a44 100644 (file)
@@ -44,6 +44,7 @@
 #include "ardour/source_factory.h"
 #include "ardour/tempo.h"
 #include "ardour/types.h"
+#include "ardour/evoral_types_convert.h"
 
 #include "pbd/i18n.h"
 #include <locale.h>
@@ -108,6 +109,7 @@ MidiRegion::MidiRegion (boost::shared_ptr<const MidiRegion> other, MusicFrame of
        : Region (other, offset)
        , _start_beats (Properties::start_beats, other->_start_beats)
        , _length_beats (Properties::length_beats, other->_length_beats)
+       , _ignore_shift (false)
 {
 
        register_properties ();
@@ -598,10 +600,13 @@ MidiRegion::model_shifted (double qn_distance)
        }
 
        if (!_ignore_shift) {
+               PropertyChange what_changed;
                _start_beats += qn_distance;
                framepos_t const new_start = _session.tempo_map().frames_between_quarter_notes (_quarter_note - _start_beats, _quarter_note);
                _start = new_start;
-               send_change (Properties::start);
+               what_changed.add (Properties::start);
+               what_changed.add (Properties::start_beats);
+               send_change (what_changed);
        } else {
                _ignore_shift = false;
        }
@@ -653,10 +658,6 @@ MidiRegion::set_start_internal (framecnt_t s, const int32_t sub_num)
 {
        Region::set_start_internal (s, sub_num);
 
-       if (_start_beats < 0.0) {
-               fix_negative_start();
-       }
-
        set_start_beats_from_start_frames ();
 }