X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faudio_streamview.cc;h=14036bc569c3603e23f537a95491ae2cb6239bdd;hb=767984b486086e3682e521179c2fb8364b3bba76;hp=89d6d394c42d1778f7ed3cb212f1661c383eb443;hpb=575c7974ebddffe71b1fc673c1463221f134bc16;p=ardour.git diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 89d6d394c4..14036bc569 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -48,6 +48,8 @@ #include "utils.h" #include "color.h" +#include "i18n.h" + using namespace ARDOUR; using namespace PBD; using namespace Editing; @@ -130,7 +132,7 @@ AudioStreamView::set_amplitude_above_axis (gdouble app) void AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wait_for_waves) { - AudioRegionView *region_view; + AudioRegionView *region_view = 0; ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_region_view), r)); @@ -167,12 +169,25 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wai region_view = new TapeAudioRegionView (canvas_group, _trackview, region, _samples_per_unit, region_color); break; + default: + fatal << string_compose (_("programming error: %1"), "illegal track mode in ::add_region_view_internal") << endmsg; + /*NOTREACHED*/ + } region_view->init (region_color, wait_for_waves); region_view->set_amplitude_above_axis(_amplitude_above_axis); region_views.push_front (region_view); + + /* if its the special single-sample length that we use for rec-regions, make it + insensitive to events + */ + + if (region->length() == 1) { + region_view->set_sensitive (false); + } + /* if this was the first one, then lets query the waveform scale and shape. otherwise, we set it to the current value */ @@ -224,7 +239,7 @@ AudioStreamView::remove_region_view (boost::weak_ptr weak_r) ++tmp; boost::shared_ptr ar = boost::dynamic_pointer_cast(r); - if (ar && (*i)->crossfade.involves (ar)) { + if (ar && (*i)->crossfade->involves (ar)) { delete *i; crossfade_views.erase (i); } @@ -276,17 +291,17 @@ AudioStreamView::playlist_changed (boost::shared_ptr ds) } void -AudioStreamView::add_crossfade (Crossfade *crossfade) +AudioStreamView::add_crossfade (boost::shared_ptr crossfade) { AudioRegionView* lview = 0; AudioRegionView* rview = 0; - + ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_crossfade), crossfade)); /* first see if we already have a CrossfadeView for this Crossfade */ for (list::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { - if ((*i)->crossfade == *crossfade) { + if ((*i)->crossfade == crossfade) { if (!crossfades_visible) { (*i)->hide(); } else { @@ -312,7 +327,7 @@ AudioStreamView::add_crossfade (Crossfade *crossfade) CrossfadeView *cv = new CrossfadeView (_trackview.canvas_display, _trackview, - *crossfade, + crossfade, _samples_per_unit, region_color, *lview, *rview); @@ -326,12 +341,12 @@ AudioStreamView::add_crossfade (Crossfade *crossfade) } void -AudioStreamView::remove_crossfade (Crossfade *xfade) +AudioStreamView::remove_crossfade (boost::shared_ptr xfade) { ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::remove_crossfade), xfade)); for (list::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { - if (&(*i)->crossfade == xfade) { + if ((*i)->crossfade == xfade) { delete *i; crossfade_views.erase (i); break; @@ -715,7 +730,7 @@ void AudioStreamView::hide_xfades_involving (AudioRegionView& rv) { for (list::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { - if ((*i)->crossfade.involves (rv.audio_region())) { + if ((*i)->crossfade->involves (rv.audio_region())) { (*i)->fake_hide (); } } @@ -725,7 +740,7 @@ void AudioStreamView::reveal_xfades_involving (AudioRegionView& rv) { for (list::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) { - if ((*i)->crossfade.involves (rv.audio_region()) && (*i)->visible()) { + if ((*i)->crossfade->involves (rv.audio_region()) && (*i)->visible()) { (*i)->show (); } }