require explicit time domain for most region-centric drags

This removed one #warning nutempo line.
This commit is contained in:
Paul Davis 2022-05-27 15:57:14 -06:00
parent 73a6cb7957
commit 69ee83e6ce
4 changed files with 54 additions and 53 deletions

View File

@ -1412,7 +1412,7 @@ Editor::drop_regions (const Glib::RefPtr<Gdk::DragContext>& /*context*/,
if ((boost::dynamic_pointer_cast<AudioRegion> (region_copy) != 0 && dynamic_cast<AudioTimeAxisView*> (rtav) != 0) ||
(boost::dynamic_pointer_cast<MidiRegion> (region_copy) != 0 && dynamic_cast<MidiTimeAxisView*> (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);
}
}

View File

@ -600,9 +600,8 @@ struct TimeAxisViewStripableSorter {
}
};
RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
RegionSlipContentsDrag::RegionSlipContentsDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
RegionBrushDrag::RegionBrushDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v, bool c)
: RegionMotionDrag (e, i, p, v)
RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<Region> r, RouteTimeAxisView* v, timepos_t const & pos)
#warning nutempo pass pos.time_domain () up to Drag's c'tor
: RegionMotionDrag (e, 0, 0, list<RegionView*> ())
RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, RouteTimeAxisView* v, timepos_t const & pos, Temporal::TimeDomain td)
: RegionMotionDrag (e, 0, 0, list<RegionView*> (), 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<RegionView*> const & v)
: RegionMoveDrag (e, i, p, v, false)
RegionRippleDrag::RegionRippleDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v, bool preserve_fade_anchor)
: RegionDrag (e, i, p, v)
TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
FadeInDrag::FadeInDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
FadeOutDrag::FadeOutDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> 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<RegionView*> const & v)
: RegionDrag (e, i, p, v)
TimeFXDrag::TimeFXDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, std::list<RegionView*> const & v, Temporal::TimeDomain td)
: RegionDrag (e, i, p, v, td)
{
DEBUG_TRACE (DEBUG::Drags, "New TimeFXDrag\n");
_preview_video = false;

View File

@ -368,7 +368,7 @@ public:
class RegionDrag : public Drag, public sigc::trackable
{
public:
RegionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &);
RegionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &, Temporal::TimeDomain);
virtual ~RegionDrag () {}
protected:
@ -404,7 +404,7 @@ class RegionSlipContentsDrag : public RegionDrag
{
public:
RegionSlipContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &);
RegionSlipContentsDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<RegionView*> const &);
RegionBrushDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<RegionView*> const &);
RegionMotionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<RegionView*> const &, bool);
RegionMoveDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<ARDOUR::Region>, RouteTimeAxisView*, Temporal::timepos_t const &);
RegionInsertDrag (Editor *, boost::shared_ptr<ARDOUR::Region>, 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<RegionView*> const &);
RegionRippleDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &, Temporal::TimeDomain Td);
~RegionRippleDrag () { delete exclude; }
void motion (GdkEvent *, bool);
@ -801,7 +801,7 @@ public:
EndTrim
};
TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list<RegionView*> const &, bool preserve_fade_anchor = false);
TrimDrag (Editor *, ArdourCanvas::Item *, RegionView*, std::list<RegionView*> 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<RegionView*> const &);
FadeInDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<RegionView*> const &);
FadeOutDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> 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<RegionView*> const &);
TimeFXDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &, Temporal::TimeDomain td);
void start_grab (GdkEvent *, Gdk::Cursor* c = 0);
void motion (GdkEvent *, bool);

View File

@ -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<RegionView*> (item->get_data("regionview")), selection->regions), event, _cursors->fade_in);
RegionView* rv = reinterpret_cast<RegionView*> (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<RegionView*> (item->get_data("regionview")), selection->regions), event, _cursors->fade_out);
RegionView* rv = reinterpret_cast<RegionView*> (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<RegionView*> 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