list<pair<boost::shared_ptr<Region>, double> > pending_explicit_relayers;
Playlist::RegionList pending_implicit_relayers;
+ set<RouteTimeAxisView*> views_to_update;
if (_brushing) {
/* all changes were made during motion event handlers */
continue;
}
+ views_to_update.insert (dest_rtv);
+
framepos_t where;
if (changed_position && !_x_constrained) {
add_stateful_diff_commands_for_playlists (modified_playlists);
_editor->commit_reversible_command ();
+
+ /* We have futzed with the layering of canvas items on our streamviews.
+ If any region changed layer, this will have resulted in the stream
+ views being asked to set up their region views, and all will be
+ well. If not, we might now have badly-ordered region views. Ask
+ the Streamviews involved to sort themselves out, just in case.
+ */
+
+ for (set<RouteTimeAxisView*>::iterator i = views_to_update.begin(); i != views_to_update.end(); ++i) {
+ (*i)->view()->playlist_layered ((*i)->track ());
+ }
}
/** Remove a region from a playlist, clearing the diff history of the playlist first if necessary.
void check_record_layers (boost::shared_ptr<ARDOUR::Region>, ARDOUR::framepos_t);
+ virtual void playlist_layered (boost::weak_ptr<ARDOUR::Track>);
+
sigc::signal<void, RegionView*> RegionViewAdded;
sigc::signal<void> RegionViewRemoved;
void layer_regions ();
virtual void playlist_switched (boost::weak_ptr<ARDOUR::Track>);
- virtual void playlist_layered (boost::weak_ptr<ARDOUR::Track>);
virtual void color_handler () = 0;