diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 100a0f7713..450e1dc75f 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -182,6 +182,8 @@ class Playlist : public SessionObject PBD::Signal0 NameChanged; PBD::Signal0 LengthChanged; PBD::Signal0 LayeringChanged; + + /** Emitted when regions have moved (not when regions have only been trimmed) */ PBD::Signal2 > const &, bool> RangesMoved; static std::string bump_name (std::string old_name, Session&); @@ -253,6 +255,11 @@ class Playlist : public SessionObject bool pending_contents_change; bool pending_layering; bool pending_length; + + /** Movements of time ranges caused by region moves; note that + * region trims are not included in this list; it is used to + * do automation-follows-regions. + */ std::list< Evoral::RangeMove > pending_range_moves; bool save_on_thaw; std::string last_save_reason; diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 4c9b8f4bf2..e55b82c06b 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -1619,7 +1619,7 @@ Playlist::region_changed (const PropertyChange& what_changed, boost::shared_ptr< check_dependents (region, false); } - if (what_changed.contains (Properties::position)) { + if (what_changed.contains (Properties::position) && !what_changed.contains (Properties::length)) { notify_region_moved (region); }