give every Drag an explicit time domain

This commit is contained in:
Paul Davis 2021-12-04 18:44:57 -07:00
parent af0e6872b4
commit fc155e76b4
2 changed files with 34 additions and 29 deletions

View File

@ -252,7 +252,7 @@ DragManager::have_item (ArdourCanvas::Item* i) const
return j != _drags.end (); return j != _drags.end ();
} }
Drag::Drag (Editor* e, ArdourCanvas::Item* i, bool trackview_only) Drag::Drag (Editor* e, ArdourCanvas::Item* i, Temporal::TimeDomain td, bool trackview_only)
: _editor (e) : _editor (e)
, _drags (0) , _drags (0)
, _item (i) , _item (i)
@ -275,6 +275,7 @@ Drag::Drag (Editor* e, ArdourCanvas::Item* i, bool trackview_only)
, _snap_delta (0) , _snap_delta (0)
, _constraint_pressed (false) , _constraint_pressed (false)
, _grab_button (-1) , _grab_button (-1)
, _time_domain (td)
{ {
} }
@ -589,7 +590,7 @@ struct TimeAxisViewStripableSorter {
}; };
RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v) RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v)
: Drag (e, i) : Drag (e, i, p->region()->position().time_domain())
, _primary (p) , _primary (p)
, _ntracks (0) , _ntracks (0)
{ {
@ -2590,7 +2591,7 @@ RegionRippleDrag::aborted (bool movement_occurred)
RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisView* v) RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisView* v)
: Drag (e, i), : Drag (e, i, e->default_time_domain()),
_view (dynamic_cast<MidiTimeAxisView*> (v)) _view (dynamic_cast<MidiTimeAxisView*> (v))
{ {
DEBUG_TRACE (DEBUG::Drags, "New RegionCreateDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New RegionCreateDrag\n");
@ -2645,7 +2646,7 @@ RegionCreateDrag::aborted (bool)
} }
NoteResizeDrag::NoteResizeDrag (Editor* e, ArdourCanvas::Item* i) NoteResizeDrag::NoteResizeDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, region (0) , region (0)
, relative (false) , relative (false)
, at_front (true) , at_front (true)
@ -2866,7 +2867,7 @@ AVDraggingView::AVDraggingView (RegionView* v)
} }
VideoTimeLineDrag::VideoTimeLineDrag (Editor* e, ArdourCanvas::Item* i) VideoTimeLineDrag::VideoTimeLineDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, e->default_time_domain())
{ {
DEBUG_TRACE (DEBUG::Drags, "New VideoTimeLineDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New VideoTimeLineDrag\n");
@ -3381,7 +3382,7 @@ TrimDrag::setup_pointer_offset ()
} }
MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _marker (reinterpret_cast<MeterMarker*> (_item->get_data ("marker"))) , _marker (reinterpret_cast<MeterMarker*> (_item->get_data ("marker")))
, _copy (c) , _copy (c)
, _old_grid_type (e->grid_type()) , _old_grid_type (e->grid_type())
@ -3540,7 +3541,7 @@ MeterMarkerDrag::aborted (bool moved)
} }
TempoMarkerDrag::TempoMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) TempoMarkerDrag::TempoMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _copy (c) , _copy (c)
, _grab_bpm (120.0, 4.0) , _grab_bpm (120.0, 4.0)
, _before_state (0) , _before_state (0)
@ -3739,7 +3740,7 @@ TempoMarkerDrag::aborted (bool moved)
} }
BBTRulerDrag::BBTRulerDrag (Editor* e, ArdourCanvas::Item* i) BBTRulerDrag::BBTRulerDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _tempo (0) , _tempo (0)
, _before_state (0) , _before_state (0)
, _drag_valid (true) , _drag_valid (true)
@ -3905,7 +3906,7 @@ BBTRulerDrag::aborted (bool moved)
#if 0 #if 0
TempoTwistDrag::TempoTwistDrag (Editor* e, ArdourCanvas::Item* i) TempoTwistDrag::TempoTwistDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _grab_qn (0.0) , _grab_qn (0.0)
, _grab_tempo (0.0) , _grab_tempo (0.0)
, _tempo (0) , _tempo (0)
@ -4037,7 +4038,7 @@ TempoTwistDrag::aborted (bool moved)
#endif #endif
TempoEndDrag::TempoEndDrag (Editor* e, ArdourCanvas::Item* i) TempoEndDrag::TempoEndDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _tempo (0) , _tempo (0)
, _before_state (0) , _before_state (0)
, _drag_valid (true) , _drag_valid (true)
@ -4152,7 +4153,7 @@ TempoEndDrag::aborted (bool moved)
} }
CursorDrag::CursorDrag (Editor* e, EditorCursor& c, bool s) CursorDrag::CursorDrag (Editor* e, EditorCursor& c, bool s)
: Drag (e, &c.track_canvas_item(), false) : Drag (e, &c.track_canvas_item(), e->default_time_domain(), false)
, _cursor (c) , _cursor (c)
, _stop (s) , _stop (s)
, _grab_zoom (0.0) , _grab_zoom (0.0)
@ -4588,7 +4589,7 @@ FadeOutDrag::aborted (bool)
} }
MarkerDrag::MarkerDrag (Editor* e, ArdourCanvas::Item* i) MarkerDrag::MarkerDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, e->default_time_domain())
, _selection_changed (false) , _selection_changed (false)
{ {
DEBUG_TRACE (DEBUG::Drags, "New MarkerDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New MarkerDrag\n");
@ -4998,7 +4999,7 @@ MarkerDrag::update_item (Location*)
} }
ControlPointDrag::ControlPointDrag (Editor* e, ArdourCanvas::Item* i) ControlPointDrag::ControlPointDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, e->default_time_domain()) /* XXX NUTEMPO FIX TIME DOMAIN */
, _fixed_grab_x (0.0) , _fixed_grab_x (0.0)
, _fixed_grab_y (0.0) , _fixed_grab_y (0.0)
, _cumulative_x_drag (0.0) , _cumulative_x_drag (0.0)
@ -5138,7 +5139,7 @@ ControlPointDrag::active (Editing::MouseMode m)
} }
LineDrag::LineDrag (Editor* e, ArdourCanvas::Item* i) LineDrag::LineDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, e->default_time_domain())
, _line (0) , _line (0)
, _fixed_grab_x (0.0) , _fixed_grab_x (0.0)
, _fixed_grab_y (0.0) , _fixed_grab_y (0.0)
@ -5261,7 +5262,7 @@ LineDrag::aborted (bool)
} }
FeatureLineDrag::FeatureLineDrag (Editor* e, ArdourCanvas::Item* i) FeatureLineDrag::FeatureLineDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i), : Drag (e, i, e->default_time_domain()),
_line (0), _line (0),
_arv (0), _arv (0),
_region_view_grab_x (0.0), _region_view_grab_x (0.0),
@ -5341,7 +5342,7 @@ FeatureLineDrag::aborted (bool)
} }
RubberbandSelectDrag::RubberbandSelectDrag (Editor* e, ArdourCanvas::Item* i) RubberbandSelectDrag::RubberbandSelectDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, e->default_time_domain())
, _vertical_only (false) , _vertical_only (false)
{ {
DEBUG_TRACE (DEBUG::Drags, "New RubberbandSelectDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New RubberbandSelectDrag\n");
@ -5624,7 +5625,7 @@ TimeFXDrag::aborted (bool)
} }
ScrubDrag::ScrubDrag (Editor* e, ArdourCanvas::Item* i) ScrubDrag::ScrubDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::AudioTime)
{ {
DEBUG_TRACE (DEBUG::Drags, "New ScrubDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New ScrubDrag\n");
} }
@ -5657,7 +5658,7 @@ ScrubDrag::aborted (bool)
} }
SelectionDrag::SelectionDrag (Editor* e, ArdourCanvas::Item* i, Operation o) SelectionDrag::SelectionDrag (Editor* e, ArdourCanvas::Item* i, Operation o)
: Drag (e, i) : Drag (e, i, e->default_time_domain())
, _operation (o) , _operation (o)
, _add (false) , _add (false)
, _time_selection_at_start (!_editor->get_selection().time.empty()) , _time_selection_at_start (!_editor->get_selection().time.empty())
@ -6038,7 +6039,7 @@ SelectionDrag::aborted (bool)
} }
RangeMarkerBarDrag::RangeMarkerBarDrag (Editor* e, ArdourCanvas::Item* i, Operation o) RangeMarkerBarDrag::RangeMarkerBarDrag (Editor* e, ArdourCanvas::Item* i, Operation o)
: Drag (e, i, false), : Drag (e, i, e->default_time_domain(), false),
_operation (o), _operation (o),
_copy (false) _copy (false)
{ {
@ -6285,7 +6286,7 @@ RangeMarkerBarDrag::update_item (Location* location)
} }
NoteDrag::NoteDrag (Editor* e, ArdourCanvas::Item* i) NoteDrag::NoteDrag (Editor* e, ArdourCanvas::Item* i)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _cumulative_dy (0) , _cumulative_dy (0)
, _was_selected (false) , _was_selected (false)
, _copy (false) , _copy (false)
@ -6501,7 +6502,7 @@ NoteDrag::aborted (bool)
/** Make an AutomationRangeDrag for lines in an AutomationTimeAxisView */ /** Make an AutomationRangeDrag for lines in an AutomationTimeAxisView */
AutomationRangeDrag::AutomationRangeDrag (Editor* editor, AutomationTimeAxisView* atv, list<TimelineRange> const & r) AutomationRangeDrag::AutomationRangeDrag (Editor* editor, AutomationTimeAxisView* atv, list<TimelineRange> const & r)
: Drag (editor, atv->base_item ()) : Drag (editor, atv->base_item (), editor->default_time_domain()) /* XXX NUTEMPO FIX TIME DOMAIN */
, _ranges (r) , _ranges (r)
, _y_origin (atv->y_position()) , _y_origin (atv->y_position())
, _y_height (atv->effective_height()) // or atv->lines()->front()->height() ?! , _y_height (atv->effective_height()) // or atv->lines()->front()->height() ?!
@ -6513,7 +6514,7 @@ AutomationRangeDrag::AutomationRangeDrag (Editor* editor, AutomationTimeAxisView
/** Make an AutomationRangeDrag for region gain lines or MIDI controller regions */ /** Make an AutomationRangeDrag for region gain lines or MIDI controller regions */
AutomationRangeDrag::AutomationRangeDrag (Editor* editor, list<RegionView*> const & v, list<TimelineRange> const & r, double y_origin, double y_height) AutomationRangeDrag::AutomationRangeDrag (Editor* editor, list<RegionView*> const & v, list<TimelineRange> const & r, double y_origin, double y_height)
: Drag (editor, v.front()->get_canvas_group ()) : Drag (editor, v.front()->get_canvas_group (), editor->default_time_domain()) /* XXX NUTEMPO FIX TIME DOMAIN */
, _ranges (r) , _ranges (r)
, _y_origin (y_origin) , _y_origin (y_origin)
, _y_height (y_height) , _y_height (y_height)
@ -6807,7 +6808,7 @@ DraggingView::DraggingView (RegionView* v, RegionDrag* parent, TimeAxisView* ita
} }
PatchChangeDrag::PatchChangeDrag (Editor* e, PatchChange* i, MidiRegionView* r) PatchChangeDrag::PatchChangeDrag (Editor* e, PatchChange* i, MidiRegionView* r)
: Drag (e, i->canvas_item ()) : Drag (e, i->canvas_item (), Temporal::BeatTime)
, _region_view (r) , _region_view (r)
, _patch_change (i) , _patch_change (i)
, _cumulative_dx (0) , _cumulative_dx (0)
@ -6949,7 +6950,7 @@ EditorRubberbandSelectDrag::deselect_things ()
} }
NoteCreateDrag::NoteCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv) NoteCreateDrag::NoteCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _region_view (rv) , _region_view (rv)
, _drag_rect (0) , _drag_rect (0)
{ {
@ -7056,7 +7057,7 @@ NoteCreateDrag::aborted (bool)
} }
HitCreateDrag::HitCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv) HitCreateDrag::HitCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv)
: Drag (e, i) : Drag (e, i, Temporal::BeatTime)
, _region_view (rv) , _region_view (rv)
, _last_pos (Temporal::Beats()) , _last_pos (Temporal::Beats())
, _y (0.0) , _y (0.0)
@ -7149,7 +7150,7 @@ HitCreateDrag::aborted (bool)
} }
CrossfadeEdgeDrag::CrossfadeEdgeDrag (Editor* e, AudioRegionView* rv, ArdourCanvas::Item* i, bool start_yn) CrossfadeEdgeDrag::CrossfadeEdgeDrag (Editor* e, AudioRegionView* rv, ArdourCanvas::Item* i, bool start_yn)
: Drag (e, i) : Drag (e, i, Temporal::AudioTime)
, arv (rv) , arv (rv)
, start (start_yn) , start (start_yn)
{ {
@ -7248,7 +7249,7 @@ CrossfadeEdgeDrag::aborted (bool)
} }
RegionCutDrag::RegionCutDrag (Editor* e, ArdourCanvas::Item* item, samplepos_t pos) RegionCutDrag::RegionCutDrag (Editor* e, ArdourCanvas::Item* item, samplepos_t pos)
: Drag (e, item, true) : Drag (e, item, e->default_time_domain(), true)
{ {
} }
@ -7292,7 +7293,7 @@ RegionCutDrag::aborted (bool)
} }
RegionMarkerDrag::RegionMarkerDrag (Editor* ed, RegionView* r, ArdourCanvas::Item* i) RegionMarkerDrag::RegionMarkerDrag (Editor* ed, RegionView* r, ArdourCanvas::Item* i)
: Drag (ed, i) : Drag (ed, i, r->region()->position().time_domain())
, rv (r) , rv (r)
, view (static_cast<ArdourMarker*> (i->get_data ("marker"))) , view (static_cast<ArdourMarker*> (i->get_data ("marker")))
, model (rv->find_model_cue_marker (view)) , model (rv->find_model_cue_marker (view))

View File

@ -143,7 +143,7 @@ private:
class Drag class Drag
{ {
public: public:
Drag (Editor *, ArdourCanvas::Item *, bool trackview_only = true); Drag (Editor *, ArdourCanvas::Item *, Temporal::TimeDomain td, bool trackview_only = true);
virtual ~Drag () {} virtual ~Drag () {}
void set_manager (DragManager* m) { void set_manager (DragManager* m) {
@ -155,6 +155,9 @@ public:
return _item; return _item;
} }
Temporal::TimeDomain time_domain() const { return _time_domain; }
void swap_grab (ArdourCanvas::Item *, Gdk::Cursor *, uint32_t); void swap_grab (ArdourCanvas::Item *, Gdk::Cursor *, uint32_t);
bool motion_handler (GdkEvent*, bool); bool motion_handler (GdkEvent*, bool);
void abort (); void abort ();
@ -317,6 +320,7 @@ private:
Temporal::timepos_t _raw_grab_time; ///< unsnapped time that the mouse was at when start_grab was called, or 0 Temporal::timepos_t _raw_grab_time; ///< unsnapped time that the mouse was at when start_grab was called, or 0
Temporal::timepos_t _grab_time; ///< adjusted_time that the mouse was at when start_grab was called, or 0 Temporal::timepos_t _grab_time; ///< adjusted_time that the mouse was at when start_grab was called, or 0
Temporal::timepos_t _last_pointer_time; ///< adjusted_time the last time a motion occurred Temporal::timepos_t _last_pointer_time; ///< adjusted_time the last time a motion occurred
Temporal::TimeDomain _time_domain;
/* difference between some key position's snapped and unsnapped /* difference between some key position's snapped and unsnapped
* samplepos. used for relative snap. * samplepos. used for relative snap.