diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index ace81da8e5..9a9eaa4346 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -1914,7 +1914,7 @@ AudioRegionView::show_xfades () void AudioRegionView::drag_start () { - TimeAxisViewItem::drag_start (); + RegionView::drag_start (); //we used to hide xfades here. I don't see the point with the new model, but we can re-implement if needed } diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 37a2c6f90e..6dbe783885 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -2795,11 +2795,12 @@ TrimDrag::motion (GdkEvent* event, bool first_move) rv->trim_front_starting (); } + rv->drag_start (); + AudioRegionView* const arv = dynamic_cast (rv); if (arv) { arv->temporarily_hide_envelope (); - arv->drag_start (); } std::shared_ptr pl = rv->region ()->playlist (); diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 7ce3fea02c..58d7abe2db 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -963,17 +963,28 @@ RegionView::set_height (double h) } } +void +RegionView::drag_start () +{ + clear_coverage_frame (); +} + +void +RegionView::clear_coverage_frame () +{ + for (auto& i : _coverage_frame) { + delete i; + } + _coverage_frame.clear (); +} + /** Remove old coverage frame and make new ones, if we're in a LayerDisplay mode * which uses them. */ void RegionView::update_coverage_frame (LayerDisplay d) { /* remove old coverage frame */ - for (auto& i : _coverage_frame) { - delete i; - } - - _coverage_frame.clear (); + clear_coverage_frame (); if (d != Stacked) { /* don't do coverage frame unless we're in stacked mode */ diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index d4b73cff29..33f8519da4 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -86,6 +86,8 @@ public: void raise_to_top (); void lower_to_bottom (); + void drag_start (); + bool set_position(Temporal::timepos_t const & pos, void* src, double* delta = 0); virtual void show_region_editor (); @@ -238,6 +240,8 @@ private: void update_cue_markers (); + void clear_coverage_frame (); + struct ViewCueMarker { ArdourMarker* view_marker; ARDOUR::CueMarker model_marker;