13
0

Fix another bug wrt visual appearance of layered regions in

overlaid mode.


git-svn-id: svn://localhost/ardour2/branches/3.0@11098 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-12-27 21:10:20 +00:00
parent f440f91849
commit 9e785781f2
2 changed files with 16 additions and 1 deletions

View File

@ -964,6 +964,7 @@ RegionMoveDrag::finished_no_copy (
list<pair<boost::shared_ptr<Region>, double> > pending_explicit_relayers; list<pair<boost::shared_ptr<Region>, double> > pending_explicit_relayers;
Playlist::RegionList pending_implicit_relayers; Playlist::RegionList pending_implicit_relayers;
set<RouteTimeAxisView*> views_to_update;
if (_brushing) { if (_brushing) {
/* all changes were made during motion event handlers */ /* all changes were made during motion event handlers */
@ -989,6 +990,8 @@ RegionMoveDrag::finished_no_copy (
continue; continue;
} }
views_to_update.insert (dest_rtv);
framepos_t where; framepos_t where;
if (changed_position && !_x_constrained) { if (changed_position && !_x_constrained) {
@ -1134,6 +1137,17 @@ RegionMoveDrag::finished_no_copy (
add_stateful_diff_commands_for_playlists (modified_playlists); add_stateful_diff_commands_for_playlists (modified_playlists);
_editor->commit_reversible_command (); _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. /** Remove a region from a playlist, clearing the diff history of the playlist first if necessary.

View File

@ -118,6 +118,8 @@ public:
void check_record_layers (boost::shared_ptr<ARDOUR::Region>, ARDOUR::framepos_t); 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, RegionView*> RegionViewAdded;
sigc::signal<void> RegionViewRemoved; sigc::signal<void> RegionViewRemoved;
@ -141,7 +143,6 @@ protected:
void layer_regions (); void layer_regions ();
virtual void playlist_switched (boost::weak_ptr<ARDOUR::Track>); virtual void playlist_switched (boost::weak_ptr<ARDOUR::Track>);
virtual void playlist_layered (boost::weak_ptr<ARDOUR::Track>);
virtual void color_handler () = 0; virtual void color_handler () = 0;