summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-12-12 02:50:47 +0000
committerCarl Hetherington <carl@carlh.net>2011-12-12 02:50:47 +0000
commita107b95307658af9f881e453362c1388ffac2463 (patch)
treeff6265584f3c57f84e94e23544d78751d0286ab6 /libs
parent4dd7b9b34ca74342442dfb2490f7a7080fe03142 (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.h1
-rw-r--r--libs/ardour/midi_region.cc2
-rw-r--r--libs/ardour/playlist.cc1
-rw-r--r--libs/ardour/region.cc8
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 ();
+ }
+}