summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_region_view.cc9
-rw-r--r--gtk2_ardour/audio_region_view.h3
-rw-r--r--gtk2_ardour/audio_streamview.cc10
-rw-r--r--gtk2_ardour/audio_streamview.h2
-rw-r--r--gtk2_ardour/editor_drag.cc4
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));