diff options
author | Carl Hetherington <carl@carlh.net> | 2011-12-12 02:50:47 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-12-12 02:50:47 +0000 |
commit | a107b95307658af9f881e453362c1388ffac2463 (patch) | |
tree | ff6265584f3c57f84e94e23544d78751d0286ab6 /libs | |
parent | 4dd7b9b34ca74342442dfb2490f7a7080fe03142 (diff) |
Set up region BBT time when frame position changes, if the region is glued to BBT; fixes part of #4257.
git-svn-id: svn://localhost/ardour2/branches/3.0@10986 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/region.h | 1 | ||||
-rw-r--r-- | libs/ardour/midi_region.cc | 2 | ||||
-rw-r--r-- | libs/ardour/playlist.cc | 1 | ||||
-rw-r--r-- | libs/ardour/region.cc | 8 |
4 files changed, 12 insertions, 0 deletions
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index 8be4709fbf..3c59bd2202 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -396,6 +396,7 @@ class Region virtual int _set_state (const XMLNode&, int version, PBD::PropertyChange& what_changed, bool send_signal); void register_properties (); + void post_set (const PBD::PropertyChange&); protected: void use_sources (SourceList const &); diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc index 3dd0e1e203..c79c4e4bd2 100644 --- a/libs/ardour/midi_region.cc +++ b/libs/ardour/midi_region.cc @@ -153,6 +153,8 @@ MidiRegion::clone () const void MidiRegion::post_set (const PropertyChange& pc) { + Region::post_set (pc); + if (pc.contains (Properties::length) && !pc.contains (Properties::length_beats)) { update_length_beats (); } else if (pc.contains (Properties::start) && !pc.contains (Properties::start_beats)) { diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 2586a49fc4..ce6b6734af 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1354,6 +1354,7 @@ Playlist::flush_notifications (bool from_undo) (*r)->set_position ((*r)->position() + distance); } + /* XXX: may not be necessary; Region::post_set should do this, I think */ for (RegionList::iterator r = fixup.begin(); r != fixup.end(); ++r) { (*r)->recompute_position_from_lock_style (); } diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index 43a4270501..d337cf6625 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -1685,3 +1685,11 @@ Region::is_compound () const { return max_source_level() > 0; } + +void +Region::post_set (const PropertyChange& pc) +{ + if (pc.contains (Properties::position)) { + recompute_position_from_lock_style (); + } +} |