diff options
author | Carl Hetherington <carl@carlh.net> | 2012-06-15 15:01:35 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-06-15 15:01:35 +0000 |
commit | a8dd4ec8053d77a5501f16c2cc1bba24f82f1b95 (patch) | |
tree | 7d25cad8bb22543b323d4ea25a84ccb95d74937f | |
parent | e258a15330a7cf1dfb7f54870fc6945cdbd07922 (diff) |
Re-show all xfades that we hide during drags (#4933).
git-svn-id: svn://localhost/ardour2/branches/3.0@12729 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/audio_region_view.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/audio_streamview.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 4 |
5 files changed, 24 insertions, 4 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 2b8b5ed368..cb40dd8f9c 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -1794,7 +1794,7 @@ AudioRegionView::drag_start () AudioStreamView* av = atav->audio_view(); if (av) { /* this will hide our xfades too */ - av->hide_xfades_with (audio_region()); + _hidden_xfades = av->hide_xfades_with (audio_region()); } } } @@ -1803,6 +1803,11 @@ void AudioRegionView::drag_end () { TimeAxisViewItem::drag_end (); - /* fades will be redrawn if they changed */ + + for (list<AudioRegionView*>::iterator i = _hidden_xfades.begin(); i != _hidden_xfades.end(); ++i) { + (*i)->show_xfades (); + } + + _hidden_xfades.clear (); } diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 773e136952..ad5107c953 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -207,6 +207,9 @@ private: * may be 0 if no connection exists. */ std::vector<PBD::ScopedConnection*> _data_ready_connections; + + /** RegionViews that we hid the xfades for at the start of the current drag */ + std::list<AudioRegionView*> _hidden_xfades; }; #endif /* __gtk_ardour_audio_region_view_h__ */ diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 22e07c0ec9..123cb5eb64 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -530,9 +530,14 @@ AudioStreamView::hide_all_fades () } } -void +/** Hide xfades for regions that overlap ar. + * @return AudioRegionViews that xfades were hidden for. + */ +list<AudioRegionView*> AudioStreamView::hide_xfades_with (boost::shared_ptr<AudioRegion> ar) { + list<AudioRegionView*> hidden; + for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) { AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); if (arv) { @@ -541,10 +546,13 @@ AudioStreamView::hide_xfades_with (boost::shared_ptr<AudioRegion> ar) break; default: arv->hide_xfades (); + hidden.push_back (arv); break; } } } + + return hidden; } void diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h index 5ef83b7adc..18bc703650 100644 --- a/gtk2_ardour/audio_streamview.h +++ b/gtk2_ardour/audio_streamview.h @@ -61,7 +61,7 @@ class AudioStreamView : public StreamView void show_all_fades (); void hide_all_fades (); - void hide_xfades_with (boost::shared_ptr<ARDOUR::AudioRegion> ar); + std::list<AudioRegionView*> hide_xfades_with (boost::shared_ptr<ARDOUR::AudioRegion> ar); RegionView* create_region_view (boost::shared_ptr<ARDOUR::Region>, bool, bool); diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index e5eb7630c0..ae3795f7fa 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1823,6 +1823,10 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred) _editor->motion_frozen_playlists.clear (); _editor->commit_reversible_command(); + for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ++i) { + i->view->drag_end (); + } + } else { /* no mouse movement */ _editor->point_trim (event, adjusted_current_frame (event)); |