From 69ee83e6ce2a531e9fc1316faeded0565081aa92 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 27 May 2022 15:57:14 -0600 Subject: [PATCH] require explicit time domain for most region-centric drags This removed one #warning nutempo line. --- gtk2_ardour/editor_canvas_events.cc | 2 +- gtk2_ardour/editor_drag.cc | 50 ++++++++++++++--------------- gtk2_ardour/editor_drag.h | 22 ++++++------- gtk2_ardour/editor_mouse.cc | 33 ++++++++++--------- 4 files changed, 54 insertions(+), 53 deletions(-) diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 1660c8e79a..2debf3b861 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -1412,7 +1412,7 @@ Editor::drop_regions (const Glib::RefPtr& /*context*/, if ((boost::dynamic_pointer_cast (region_copy) != 0 && dynamic_cast (rtav) != 0) || (boost::dynamic_pointer_cast (region_copy) != 0 && dynamic_cast (rtav) != 0)) { - _drags->set (new RegionInsertDrag (this, region_copy, rtav, timepos_t (pos)), &event); + _drags->set (new RegionInsertDrag (this, region_copy, rtav, timepos_t (pos), drag_time_domain (region_copy.get())), &event); _drags->end_grab (&event); } } diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 4656565ac9..029f276d5c 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -600,9 +600,8 @@ struct TimeAxisViewStripableSorter { } }; -RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) -#warning nutempo un-hardcode time-domain, see fa7e7a462c8 - : Drag (e, i, p && p->region () ? p->region()->position().time_domain() : Temporal::AudioTime) +RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, Temporal::TimeDomain td) + : Drag (e, i, td) , _primary (p) , _ntracks (0) { @@ -695,8 +694,8 @@ RegionDrag::add_stateful_diff_commands_for_playlists (PlaylistSet const & playli } -RegionSlipContentsDrag::RegionSlipContentsDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionDrag (e, i, p, v) +RegionSlipContentsDrag::RegionSlipContentsDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, TimeDomain td) + : RegionDrag (e, i, p, v, td) { DEBUG_TRACE (DEBUG::Drags, "New RegionSlipContentsDrag\n"); } @@ -754,8 +753,8 @@ RegionSlipContentsDrag::aborted (bool movement_occurred) } -RegionBrushDrag::RegionBrushDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionDrag (e, i, p, v) +RegionBrushDrag::RegionBrushDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, TimeDomain td) + : RegionDrag (e, i, p, v, td) { DEBUG_TRACE (DEBUG::Drags, "New RegionBrushDrag\n"); _y_constrained = true; @@ -806,8 +805,8 @@ RegionBrushDrag::aborted (bool movement_occurred) _editor->abort_reversible_command (); } -RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionDrag (e, i, p, v) +RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, TimeDomain td) + : RegionDrag (e, i, p, v, td) , _ignore_video_lock (false) , _total_x_delta (0) , _last_pointer_time_axis_view (0) @@ -892,7 +891,7 @@ RegionMotionDrag::compute_x_delta (GdkEvent const * event, Temporal::timepos_t & pending_region_position = _last_position; } - if (pending_region_position > timepos_t::max (pending_region_position.time_domain()).earlier (_primary->region()->length())) { + if (pending_region_position > timepos_t::max (time_domain()).earlier (_primary->region()->length())) { pending_region_position = _last_position; } @@ -917,7 +916,7 @@ RegionMotionDrag::compute_x_delta (GdkEvent const * event, Temporal::timepos_t & const timepos_t off = i->view->region()->position() + total_dx; if (off.is_negative()) { dx = dx - _editor->time_to_pixel_unrounded (off); - pending_region_position = pending_region_position.earlier (timecnt_t (off, timepos_t (pending_region_position.time_domain()))); + pending_region_position = pending_region_position.earlier (timecnt_t (off, timepos_t (time_domain()))); break; } } @@ -2211,8 +2210,8 @@ RegionMotionDrag::aborted (bool) /** @param b true to brush, otherwise false. * @param c true to make copies of the regions being moved, otherwise false. */ -RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, bool c) - : RegionMotionDrag (e, i, p, v) +RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, bool c, TimeDomain td) + : RegionMotionDrag (e, i, p, v, td) , _copy (c) , _new_region_view (0) { @@ -2227,9 +2226,8 @@ RegionMoveDrag::setup_pointer_offset () _pointer_offset = timecnt_t (_last_position.distance (raw_grab_time()), _last_position); } -RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr r, RouteTimeAxisView* v, timepos_t const & pos) -#warning nutempo pass pos.time_domain () up to Drag's c'tor - : RegionMotionDrag (e, 0, 0, list ()) +RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr r, RouteTimeAxisView* v, timepos_t const & pos, Temporal::TimeDomain td) + : RegionMotionDrag (e, 0, 0, list (), td) { DEBUG_TRACE (DEBUG::Drags, "New RegionInsertDrag\n"); @@ -2386,8 +2384,8 @@ RegionRippleDrag::y_movement_allowed (int delta_track, double delta_layer, int s return false; } -RegionRippleDrag::RegionRippleDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionMoveDrag (e, i, p, v, false) +RegionRippleDrag::RegionRippleDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, TimeDomain td) + : RegionMoveDrag (e, i, p, v, false, td) { DEBUG_TRACE (DEBUG::Drags, "New RegionRippleDrag\n"); // compute length of selection @@ -3038,8 +3036,8 @@ VideoTimeLineDrag::aborted (bool) } } -TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, bool preserve_fade_anchor) - : RegionDrag (e, i, p, v) +TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, Temporal::TimeDomain td, bool preserve_fade_anchor) + : RegionDrag (e, i, p, v, td) , _operation (StartTrim) , _preserve_fade_anchor (preserve_fade_anchor) , _jump_position_when_done (false) @@ -4207,8 +4205,8 @@ CursorDrag::aborted (bool) _editor->playhead_cursor()->set_position (adjusted_time (grab_time (), 0, false).samples()); } -FadeInDrag::FadeInDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionDrag (e, i, p, v) +FadeInDrag::FadeInDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, Temporal::TimeDomain td) + : RegionDrag (e, i, p, v, td) { DEBUG_TRACE (DEBUG::Drags, "New FadeInDrag\n"); } @@ -4338,8 +4336,8 @@ FadeInDrag::aborted (bool) } } -FadeOutDrag::FadeOutDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : RegionDrag (e, i, p, v) +FadeOutDrag::FadeOutDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, Temporal::TimeDomain td) + : RegionDrag (e, i, p, v, td) { DEBUG_TRACE (DEBUG::Drags, "New FadeOutDrag\n"); } @@ -5415,8 +5413,8 @@ RubberbandSelectDrag::aborted (bool) _editor->rubberband_rect->hide (); } -TimeFXDrag::TimeFXDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, std::list const & v) - : RegionDrag (e, i, p, v) +TimeFXDrag::TimeFXDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, std::list const & v, Temporal::TimeDomain td) + : RegionDrag (e, i, p, v, td) { DEBUG_TRACE (DEBUG::Drags, "New TimeFXDrag\n"); _preview_video = false; diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 8415713b4e..4c38608076 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -368,7 +368,7 @@ public: class RegionDrag : public Drag, public sigc::trackable { public: - RegionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + RegionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain); virtual ~RegionDrag () {} protected: @@ -404,7 +404,7 @@ class RegionSlipContentsDrag : public RegionDrag { public: - RegionSlipContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + RegionSlipContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain td); virtual ~RegionSlipContentsDrag () {} virtual void start_grab (GdkEvent *, Gdk::Cursor *); @@ -417,7 +417,7 @@ public: class RegionBrushDrag : public RegionDrag { public: - RegionBrushDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + RegionBrushDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain td); virtual ~RegionBrushDrag () {} virtual void start_grab (GdkEvent *, Gdk::Cursor *); @@ -434,7 +434,7 @@ class RegionMotionDrag : public RegionDrag { public: - RegionMotionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + RegionMotionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain td); virtual ~RegionMotionDrag () {} virtual void start_grab (GdkEvent *, Gdk::Cursor *); @@ -473,7 +473,7 @@ private: class RegionMoveDrag : public RegionMotionDrag { public: - RegionMoveDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, bool); + RegionMoveDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, bool, Temporal::TimeDomain); virtual ~RegionMoveDrag () {} void motion (GdkEvent *, bool); @@ -534,7 +534,7 @@ private: class RegionInsertDrag : public RegionMotionDrag { public: - RegionInsertDrag (Editor *, boost::shared_ptr, RouteTimeAxisView*, Temporal::timepos_t const &); + RegionInsertDrag (Editor *, boost::shared_ptr, RouteTimeAxisView*, Temporal::timepos_t const &, Temporal::TimeDomain); void finished (GdkEvent *, bool); void aborted (bool); @@ -549,7 +549,7 @@ public: class RegionRippleDrag : public RegionMoveDrag { public: - RegionRippleDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + RegionRippleDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain Td); ~RegionRippleDrag () { delete exclude; } void motion (GdkEvent *, bool); @@ -801,7 +801,7 @@ public: EndTrim }; - TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list const &, bool preserve_fade_anchor = false); + TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list const &, Temporal::TimeDomain td, bool preserve_fade_anchor = false); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); @@ -1021,7 +1021,7 @@ private: class FadeInDrag : public RegionDrag { public: - FadeInDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + FadeInDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); @@ -1043,7 +1043,7 @@ public: class FadeOutDrag : public RegionDrag { public: - FadeOutDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + FadeOutDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain td); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); @@ -1252,7 +1252,7 @@ private: class TimeFXDrag : public RegionDrag { public: - TimeFXDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &); + TimeFXDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list const &, Temporal::TimeDomain td); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index c0063d4e4c..ec5561db53 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -944,7 +944,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case RegionViewNameHighlight: if (!clicked_regionview->region()->locked()) { - _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; } break; @@ -1041,13 +1041,17 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT switch (item_type) { case FadeInHandleItem: { - _drags->set (new FadeInDrag (this, item, reinterpret_cast (item->get_data("regionview")), selection->regions), event, _cursors->fade_in); + RegionView* rv = reinterpret_cast (item->get_data("regionview")); + assert (rv); + _drags->set (new FadeInDrag (this, item, rv, selection->regions, drag_time_domain (rv->region())), event, _cursors->fade_in); return true; } case FadeOutHandleItem: { - _drags->set (new FadeOutDrag (this, item, reinterpret_cast (item->get_data("regionview")), selection->regions), event, _cursors->fade_out); + RegionView* rv = reinterpret_cast (item->get_data("regionview")); + assert (rv); + _drags->set (new FadeOutDrag (this, item, rv, selection->regions, drag_time_domain (rv->region())), event, _cursors->fade_out); return true; } @@ -1087,7 +1091,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT if (Keyboard::modifier_state_equals (event->button.state, ArdourKeyboard::slip_contents_modifier ())) { if (!clicked_regionview->region()->locked() && (Config->get_edit_mode() != Lock)) { - _drags->add (new RegionSlipContentsDrag (this, item, clicked_regionview, selection->regions.by_layer())); + _drags->add (new RegionSlipContentsDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region()))); } } else if (ArdourKeyboard::indicates_copy (event->button.state)) { add_region_drag (item, event, clicked_regionview, true); @@ -1106,7 +1110,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case LeftFrameHandle: case RightFrameHandle: if (!clicked_regionview->region()->locked()) { - _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region()), false), event); return true; } break; @@ -1114,7 +1118,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case FadeInTrimHandleItem: case FadeOutTrimHandleItem: if (!clicked_regionview->region()->locked()) { - _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), true), event); + _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region()), true), event); return true; } break; @@ -1123,7 +1127,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT { /* rename happens on edit clicks */ if (clicked_regionview->get_name_highlight()) { - _drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; } break; @@ -1328,7 +1332,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT return true; } else if (clicked_regionview) { /* do time-FX */ - _drags->set (new TimeFXDrag (this, item, clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TimeFXDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; } break; @@ -1376,18 +1380,18 @@ Editor::button_press_handler_2 (ArdourCanvas::Item* item, GdkEvent* event, ItemT switch (item_type) { case RegionViewNameHighlight: - _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; break; case LeftFrameHandle: case RightFrameHandle: - _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; break; case RegionViewName: - _drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, selection->regions.by_layer()), event); + _drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, selection->regions.by_layer(), drag_time_domain (clicked_regionview->region())), event); return true; break; @@ -2615,8 +2619,7 @@ Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region return; } - _drags->add (new RegionMoveDrag (this, item, region_view, selection->regions.by_layer(), copy)); - + _drags->add (new RegionMoveDrag (this, item, region_view, selection->regions.by_layer(), copy, drag_time_domain (region_view->region()))); } void @@ -2633,7 +2636,7 @@ Editor::add_region_brush_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* } std::list empty; - _drags->add (new RegionBrushDrag (this, item, region_view, empty)); + _drags->add (new RegionBrushDrag (this, item, region_view, empty, drag_time_domain (region_view->region()))); } /** Start a grab where a time range is selected, track(s) are selected, and the @@ -2697,7 +2700,7 @@ Editor::start_selection_grab (ArdourCanvas::Item* /*item*/, GdkEvent* event) commit_reversible_command (); - _drags->set (new RegionMoveDrag (this, latest_regionviews.front()->get_canvas_group(), latest_regionviews.front(), latest_regionviews, false), event); + _drags->set (new RegionMoveDrag (this, latest_regionviews.front()->get_canvas_group(), latest_regionviews.front(), latest_regionviews, false, drag_time_domain (latest_regionviews.front()->region())), event); } void