summaryrefslogtreecommitdiff
path: root/gtk2_ardour/audio_streamview.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-06-08 19:28:51 +0000
committerCarl Hetherington <carl@carlh.net>2009-06-08 19:28:51 +0000
commit0874426a5b6777559a12f87070b2aadb230ec50d (patch)
treed5126aab2f88035fe42531e663816f4509333618 /gtk2_ardour/audio_streamview.cc
parent472fa271fd2de889ef41dc3d7a1aaccce9ea42c0 (diff)
Further refactoring of drag code. Changes so that drags from the region list display a region view during the drag.
git-svn-id: svn://localhost/ardour2/branches/3.0@5127 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/audio_streamview.cc')
-rw-r--r--gtk2_ardour/audio_streamview.cc64
1 files changed, 38 insertions, 26 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 03f3d3d8bd..e2aa080b64 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -104,36 +104,15 @@ AudioStreamView::set_amplitude_above_axis (gdouble app)
}
RegionView*
-AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait_for_waves, bool recording)
+AudioStreamView::create_region_view (boost::shared_ptr<Region> r, bool wait_for_waves, bool recording)
{
AudioRegionView *region_view = 0;
boost::shared_ptr<AudioRegion> region = boost::dynamic_pointer_cast<AudioRegion> (r);
if (region == 0) {
- return NULL;
+ return 0;
}
-// if(!recording){
-// for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
-// if ((*i)->region() == r) {
-// cerr << "audio_streamview in add_region_view_internal region found" << endl;
- /* great. we already have a AudioRegionView for this Region. use it again. */
-
-// (*i)->set_valid (true);
-
- // this might not be necessary
-// AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
-
-// if (arv) {
-// arv->set_waveform_scale (_waveform_scale);
-// arv->set_waveform_shape (_waveform_shape);
-// }
-
-// return NULL;
-// }
-// }
-// }
-
switch (_trackview.audio_track()->mode()) {
case NonLayered:
@@ -160,7 +139,6 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wai
region_view->init (region_color, wait_for_waves);
region_view->set_amplitude_above_axis(_amplitude_above_axis);
region_view->set_height (child_height ());
- region_views.push_front (region_view);
/* if its the special single-sample length that we use for rec-regions, make it
insensitive to events
@@ -195,8 +173,42 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wai
/* follow global waveform setting */
region_view->set_waveform_visible(_trackview.editor().show_waveforms());
+ return region_view;
+}
+
+RegionView*
+AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait_for_waves, bool recording)
+{
+ RegionView *region_view = create_region_view (r, wait_for_waves, recording);
+ if (region_view == 0) {
+ return 0;
+ }
+
+// if(!recording){
+// for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+// if ((*i)->region() == r) {
+// cerr << "audio_streamview in add_region_view_internal region found" << endl;
+ /* great. we already have a AudioRegionView for this Region. use it again. */
+
+// (*i)->set_valid (true);
+
+ // this might not be necessary
+// AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+
+// if (arv) {
+// arv->set_waveform_scale (_waveform_scale);
+// arv->set_waveform_shape (_waveform_shape);
+// }
+
+// return NULL;
+// }
+// }
+// }
+
+ region_views.push_front (region_view);
+
/* catch regionview going away */
- region->GoingAway.connect (bind (mem_fun (*this, &AudioStreamView::remove_region_view), boost::weak_ptr<Region> (r)));
+ r->GoingAway.connect (bind (mem_fun (*this, &AudioStreamView::remove_region_view), boost::weak_ptr<Region> (r)));
RegionViewAdded (region_view);
@@ -400,7 +412,7 @@ AudioStreamView::redisplay_diskstream ()
if (_trackview.is_audio_track()) {
_trackview.get_diskstream()->playlist()->foreach_region(
- sigc::mem_fun (*this, &StreamView::add_region_view)
+ sigc::hide_return (sigc::mem_fun (*this, &StreamView::add_region_view))
);
boost::shared_ptr<AudioPlaylist> apl = boost::dynamic_pointer_cast<AudioPlaylist>(