diff options
Diffstat (limited to 'gtk2_ardour/editor_drag.cc')
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 85 |
1 files changed, 42 insertions, 43 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index b9906eda5b..042ae5dd1f 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -253,7 +253,6 @@ RegionDrag::region_going_away (RegionView* v) RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, bool b) : RegionDrag (e, i, p, v), - _dest_trackview (0), _dest_layer (0), _brushing (b) { @@ -280,7 +279,7 @@ RegionMotionDrag::get_time_axis_view_summary () /* get a bitmask representing the visible tracks */ for (Editor::TrackViewList::iterator i = _editor->track_views.begin(); i != _editor->track_views.end(); ++i) { - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); + RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); TimeAxisView::Children children_list; /* zeroes are audio/MIDI tracks. ones are other types. */ @@ -310,7 +309,7 @@ RegionMotionDrag::get_time_axis_view_summary () bool RegionMotionDrag::compute_y_delta ( - TimeAxisView const * last_pointer_view, TimeAxisView* current_pointer_view, + TimeAxisViewConstPtr last_pointer_view, TimeAxisViewPtr current_pointer_view, int32_t last_pointer_layer, int32_t current_pointer_layer, TimeAxisViewSummary const & tavs, int32_t* pointer_order_span, int32_t* pointer_layer_span, @@ -366,9 +365,9 @@ RegionMotionDrag::compute_y_delta ( iy1 += _editor->vertical_adjustment.get_value() - _editor->canvas_timebars_vsize; /* get the new trackview for this particular region */ - pair<TimeAxisView*, int> const tvp = _editor->trackview_by_y_position (iy1); + pair<TimeAxisViewPtr, int> const tvp = _editor->trackview_by_y_position (iy1); assert (tvp.first); - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tvp.first); + RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tvp.first); /* XXX: not sure that we should be passing canvas_pointer_order_span in here, as surely this is a per-region thing... */ @@ -495,14 +494,14 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) current_pointer_layer the current layer on that TimeAxisView; in this code layer numbers are with respect to how the view's layers are displayed; if we are in Overlaid mode, layer is always 0 regardless of what the region's "real" layer is */ - RouteTimeAxisView* current_pointer_view; + RouteTimeAxisViewPtr current_pointer_view; layer_t current_pointer_layer; if (!check_possible (¤t_pointer_view, ¤t_pointer_layer)) { return; } /* TimeAxisView that we were pointing at last time we entered this method */ - TimeAxisView const * const last_pointer_view = _dest_trackview; + TimeAxisViewConstPtr const last_pointer_view = _dest_trackview; /* the order of the track that we were pointing at last time we entered this method */ int32_t const last_pointer_order = last_pointer_view->order (); /* the layer that we were pointing at last time we entered this method */ @@ -573,7 +572,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) // hide any dependent views - rv->get_time_axis_view().hide_dependent_views (*rv); + rv->get_time_axis_view()->hide_dependent_views (*rv); /* reparent to a non scrolling group so that we can keep the @@ -589,8 +588,8 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) } /* current view for this particular region */ - pair<TimeAxisView*, int> pos = _editor->trackview_by_y_position (iy1); - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (pos.first); + pair<TimeAxisViewPtr, int> pos = _editor->trackview_by_y_position (iy1); + RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (pos.first); if (pointer_order_span != 0 && !clamp_y_axis) { @@ -671,8 +670,8 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) /* find out where we'll be when we move and set height accordingly */ - pair<TimeAxisView*, int> const pos = _editor->trackview_by_y_position (iy1 + y_delta); - RouteTimeAxisView const * temp_rtv = dynamic_cast<RouteTimeAxisView*> (pos.first); + pair<TimeAxisViewPtr, int> const pos = _editor->trackview_by_y_position (iy1 + y_delta); + RouteTimeAxisViewConstPtr temp_rtv = boost::dynamic_pointer_cast<const RouteTimeAxisView> (pos.first); rv->set_height (temp_rtv->view()->child_height()); /* if you un-comment the following, the region colours will follow @@ -734,8 +733,8 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) pair<PlaylistSet::iterator,bool> insert_result, frozen_insert_result; nframes64_t drag_delta; bool changed_tracks, changed_position; - map<RegionView*, RouteTimeAxisView*> final; - RouteTimeAxisView* source_tv; + map<RegionView*, RouteTimeAxisViewPtr> final; + RouteTimeAxisViewPtr source_tv; if (!movement_occurred) { /* just a click */ @@ -784,7 +783,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) } changed_position = (_last_frame_position != (nframes64_t) (_primary->region()->position())); - changed_tracks = (_dest_trackview != &_primary->get_time_axis_view()); + changed_tracks = (_dest_trackview != _primary->get_time_axis_view()); drag_delta = _primary->region()->position() - _last_frame_position; @@ -796,7 +795,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) for (list<RegionView*>::const_iterator i = _views.begin(); i != _views.end(); ) { RegionView* rv = (*i); - RouteTimeAxisView* dest_rtv = final[*i]; + RouteTimeAxisViewPtr dest_rtv = final[*i]; nframes64_t where; @@ -892,7 +891,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) because we may have copied the region and it has not been attached to a playlist. */ - assert ((source_tv = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view()))); + assert ((source_tv = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()))); assert ((ds = source_tv->get_diskstream())); assert ((from_playlist = ds->playlist())); @@ -1060,12 +1059,12 @@ RegionMotionDrag::copy_regions (GdkEvent* event) } bool -RegionMotionDrag::check_possible (RouteTimeAxisView** tv, layer_t* layer) +RegionMotionDrag::check_possible (RouteTimeAxisViewPtr* tv, layer_t* layer) { /* Which trackview is this ? */ - pair<TimeAxisView*, int> const tvp = _editor->trackview_by_y_position (current_pointer_y ()); - (*tv) = dynamic_cast<RouteTimeAxisView*> (tvp.first); + pair<TimeAxisViewPtr, int> const tvp = _editor->trackview_by_y_position (current_pointer_y ()); + (*tv) = boost::dynamic_pointer_cast<RouteTimeAxisView> (tvp.first); (*layer) = tvp.second; if (*tv && (*tv)->layer_display() == Overlaid) { @@ -1177,7 +1176,7 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, : RegionMotionDrag (e, i, p, v, b), _copy (c) { - TimeAxisView* const tv = &_primary->get_time_axis_view (); + TimeAxisViewPtr const tv = _primary->get_time_axis_view (); _dest_trackview = tv; if (tv->layer_display() == Overlaid) { @@ -1187,7 +1186,7 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, } double speed = 1; - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv); + RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv); if (rtv && rtv->is_track()) { speed = rtv->get_diskstream()->speed (); } @@ -1203,11 +1202,11 @@ RegionMoveDrag::start_grab (GdkEvent* event, Gdk::Cursor* c) _pointer_frame_offset = _grab_frame - _last_frame_position; } -RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, RouteTimeAxisView* v, nframes64_t pos) +RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, RouteTimeAxisViewPtr v, nframes64_t pos) : RegionMotionDrag (e, 0, 0, list<RegionView*> (), false) { - assert ((boost::dynamic_pointer_cast<AudioRegion> (r) && dynamic_cast<AudioTimeAxisView*> (v)) || - (boost::dynamic_pointer_cast<MidiRegion> (r) && dynamic_cast<MidiTimeAxisView*> (v))); + assert ((boost::dynamic_pointer_cast<AudioRegion> (r) && boost::dynamic_pointer_cast<AudioTimeAxisView> (v)) || + (boost::dynamic_pointer_cast<MidiRegion> (r) && boost::dynamic_pointer_cast<MidiTimeAxisView> (v))); _primary = v->view()->create_region_view (r, false, false); @@ -1222,10 +1221,10 @@ RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, Rout _dest_layer = _primary->region()->layer (); } -map<RegionView*, RouteTimeAxisView*> +map<RegionView*, RouteTimeAxisViewPtr> RegionMotionDrag::find_time_axis_views () { - map<RegionView*, RouteTimeAxisView*> tav; + map<RegionView*, RouteTimeAxisViewPtr> tav; for (list<RegionView*>::const_iterator i = _views.begin(); i != _views.end(); ++i) { @@ -1234,8 +1233,8 @@ RegionMotionDrag::find_time_axis_views () (*i)->get_canvas_frame()->i2w (ix1, iy1); iy1 += _editor->vertical_adjustment.get_value() - _editor->canvas_timebars_vsize; - pair<TimeAxisView*, int> tv = _editor->trackview_by_y_position (iy1); - tav[*i] = dynamic_cast<RouteTimeAxisView*> (tv.first); + pair<TimeAxisViewPtr, int> tv = _editor->trackview_by_y_position (iy1); + tav[*i] = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv.first); } return tav; @@ -1247,9 +1246,9 @@ RegionInsertDrag::finished (GdkEvent* event, bool movement_occurred) { _editor->update_canvas_now (); - map<RegionView*, RouteTimeAxisView*> final = find_time_axis_views (); + map<RegionView*, RouteTimeAxisViewPtr> final = find_time_axis_views (); - RouteTimeAxisView* dest_rtv = final[_primary]; + RouteTimeAxisViewPtr dest_rtv = final[_primary]; _primary->get_canvas_group()->reparent (*dest_rtv->view()->canvas_item()); _primary->get_canvas_group()->property_y() = 0; @@ -1282,7 +1281,7 @@ struct RegionSelectionByPosition { void RegionSpliceDrag::motion (GdkEvent* event, bool) { - RouteTimeAxisView* tv; + RouteTimeAxisViewPtr tv; layer_t layer; if (!check_possible (&tv, &layer)) { @@ -1304,7 +1303,7 @@ RegionSpliceDrag::motion (GdkEvent* event, bool) for (RegionSelection::iterator i = copy.begin(); i != copy.end(); ++i) { - RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*> (&(*i)->get_time_axis_view()); + RouteTimeAxisViewPtr atv = boost::dynamic_pointer_cast<RouteTimeAxisView> ((*i)->get_time_axis_view()); if (!atv) { continue; @@ -1344,7 +1343,7 @@ RegionSpliceDrag::finished (GdkEvent* event, bool) } -RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisView* v) +RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisViewPtr v) : Drag (e, i), _view (v) { @@ -1373,13 +1372,13 @@ RegionCreateDrag::motion (GdkEvent* event, bool first_move) void RegionCreateDrag::finished (GdkEvent* event, bool movement_occurred) { - MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (_dest_trackview); + MidiTimeAxisViewPtr mtv = boost::dynamic_pointer_cast<MidiTimeAxisView> (_dest_trackview); if (!mtv) { return; } const boost::shared_ptr<MidiDiskstream> diskstream = - boost::dynamic_pointer_cast<MidiDiskstream>(mtv->view()->trackview().track()->diskstream()); + boost::dynamic_pointer_cast<MidiDiskstream>(mtv->view()->trackview()->track()->diskstream()); if (!diskstream) { warning << "Cannot create non-MIDI region" << endl; @@ -1436,8 +1435,8 @@ void TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor *) { double speed = 1.0; - TimeAxisView* tvp = &_primary->get_time_axis_view (); - RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); + TimeAxisViewPtr tvp = _primary->get_time_axis_view (); + RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); if (tv && tv->is_track()) { speed = tv->get_diskstream()->speed(); @@ -1490,8 +1489,8 @@ TrimDrag::motion (GdkEvent* event, bool first_move) */ double speed = 1.0; - TimeAxisView* tvp = &_primary->get_time_axis_view (); - RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); + TimeAxisViewPtr tvp = _primary->get_time_axis_view (); + RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result; if (tv && tv->is_track()) { @@ -2762,7 +2761,7 @@ TimeFXDrag::motion (GdkEvent* event, bool) } if (_current_pointer_frame > rv->region()->position()) { - rv->get_time_axis_view().show_timestretch (rv->region()->position(), _current_pointer_frame); + rv->get_time_axis_view()->show_timestretch (rv->region()->position(), _current_pointer_frame); } _last_pointer_frame = _current_pointer_frame; @@ -2773,7 +2772,7 @@ TimeFXDrag::motion (GdkEvent* event, bool) void TimeFXDrag::finished (GdkEvent* event, bool movement_occurred) { - _primary->get_time_axis_view().hide_timestretch (); + _primary->get_time_axis_view()->hide_timestretch (); if (!movement_occurred) { return; @@ -3240,7 +3239,7 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) case MouseRange: /* find the two markers on either side of the click and make the range out of it */ - _editor->selection->set (0, start, end); + _editor->selection->set (TimeAxisViewPtr (), start, end); break; default: |