diff options
author | Carl Hetherington <carl@carlh.net> | 2009-06-08 19:28:51 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-06-08 19:28:51 +0000 |
commit | 0874426a5b6777559a12f87070b2aadb230ec50d (patch) | |
tree | d5126aab2f88035fe42531e663816f4509333618 /gtk2_ardour/audio_streamview.cc | |
parent | 472fa271fd2de889ef41dc3d7a1aaccce9ea42c0 (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.cc | 64 |
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>( |