diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 18f7732547..90238e5eac 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -252,7 +252,7 @@ DragManager::have_item (ArdourCanvas::Item* i) const 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) , _drags (0) , _item (i) @@ -275,6 +275,7 @@ Drag::Drag (Editor* e, ArdourCanvas::Item* i, bool trackview_only) , _snap_delta (0) , _constraint_pressed (false) , _grab_button (-1) + , _time_domain (td) { } @@ -589,7 +590,7 @@ struct TimeAxisViewStripableSorter { }; RegionDrag::RegionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v) - : Drag (e, i) + : Drag (e, i, p->region()->position().time_domain()) , _primary (p) , _ntracks (0) { @@ -2590,7 +2591,7 @@ RegionRippleDrag::aborted (bool movement_occurred) RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisView* v) - : Drag (e, i), + : Drag (e, i, e->default_time_domain()), _view (dynamic_cast (v)) { DEBUG_TRACE (DEBUG::Drags, "New RegionCreateDrag\n"); @@ -2645,7 +2646,7 @@ RegionCreateDrag::aborted (bool) } NoteResizeDrag::NoteResizeDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , region (0) , relative (false) , at_front (true) @@ -2866,7 +2867,7 @@ AVDraggingView::AVDraggingView (RegionView* v) } VideoTimeLineDrag::VideoTimeLineDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, e->default_time_domain()) { DEBUG_TRACE (DEBUG::Drags, "New VideoTimeLineDrag\n"); @@ -3381,7 +3382,7 @@ TrimDrag::setup_pointer_offset () } MeterMarkerDrag::MeterMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _marker (reinterpret_cast (_item->get_data ("marker"))) , _copy (c) , _old_grid_type (e->grid_type()) @@ -3540,7 +3541,7 @@ MeterMarkerDrag::aborted (bool moved) } TempoMarkerDrag::TempoMarkerDrag (Editor* e, ArdourCanvas::Item* i, bool c) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _copy (c) , _grab_bpm (120.0, 4.0) , _before_state (0) @@ -3739,7 +3740,7 @@ TempoMarkerDrag::aborted (bool moved) } BBTRulerDrag::BBTRulerDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _tempo (0) , _before_state (0) , _drag_valid (true) @@ -3905,7 +3906,7 @@ BBTRulerDrag::aborted (bool moved) #if 0 TempoTwistDrag::TempoTwistDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _grab_qn (0.0) , _grab_tempo (0.0) , _tempo (0) @@ -4037,7 +4038,7 @@ TempoTwistDrag::aborted (bool moved) #endif TempoEndDrag::TempoEndDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _tempo (0) , _before_state (0) , _drag_valid (true) @@ -4152,7 +4153,7 @@ TempoEndDrag::aborted (bool moved) } 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) , _stop (s) , _grab_zoom (0.0) @@ -4588,7 +4589,7 @@ FadeOutDrag::aborted (bool) } MarkerDrag::MarkerDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, e->default_time_domain()) , _selection_changed (false) { DEBUG_TRACE (DEBUG::Drags, "New MarkerDrag\n"); @@ -4998,7 +4999,7 @@ MarkerDrag::update_item (Location*) } 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_y (0.0) , _cumulative_x_drag (0.0) @@ -5138,7 +5139,7 @@ ControlPointDrag::active (Editing::MouseMode m) } LineDrag::LineDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, e->default_time_domain()) , _line (0) , _fixed_grab_x (0.0) , _fixed_grab_y (0.0) @@ -5261,7 +5262,7 @@ LineDrag::aborted (bool) } FeatureLineDrag::FeatureLineDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i), + : Drag (e, i, e->default_time_domain()), _line (0), _arv (0), _region_view_grab_x (0.0), @@ -5341,7 +5342,7 @@ FeatureLineDrag::aborted (bool) } RubberbandSelectDrag::RubberbandSelectDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, e->default_time_domain()) , _vertical_only (false) { DEBUG_TRACE (DEBUG::Drags, "New RubberbandSelectDrag\n"); @@ -5624,7 +5625,7 @@ TimeFXDrag::aborted (bool) } ScrubDrag::ScrubDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::AudioTime) { DEBUG_TRACE (DEBUG::Drags, "New ScrubDrag\n"); } @@ -5657,7 +5658,7 @@ ScrubDrag::aborted (bool) } SelectionDrag::SelectionDrag (Editor* e, ArdourCanvas::Item* i, Operation o) - : Drag (e, i) + : Drag (e, i, e->default_time_domain()) , _operation (o) , _add (false) , _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) - : Drag (e, i, false), + : Drag (e, i, e->default_time_domain(), false), _operation (o), _copy (false) { @@ -6285,7 +6286,7 @@ RangeMarkerBarDrag::update_item (Location* location) } NoteDrag::NoteDrag (Editor* e, ArdourCanvas::Item* i) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _cumulative_dy (0) , _was_selected (false) , _copy (false) @@ -6501,7 +6502,7 @@ NoteDrag::aborted (bool) /** Make an AutomationRangeDrag for lines in an AutomationTimeAxisView */ AutomationRangeDrag::AutomationRangeDrag (Editor* editor, AutomationTimeAxisView* atv, list const & r) - : Drag (editor, atv->base_item ()) + : Drag (editor, atv->base_item (), editor->default_time_domain()) /* XXX NUTEMPO FIX TIME DOMAIN */ , _ranges (r) , _y_origin (atv->y_position()) , _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 */ AutomationRangeDrag::AutomationRangeDrag (Editor* editor, list const & v, list 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) , _y_origin (y_origin) , _y_height (y_height) @@ -6807,7 +6808,7 @@ DraggingView::DraggingView (RegionView* v, RegionDrag* parent, TimeAxisView* ita } PatchChangeDrag::PatchChangeDrag (Editor* e, PatchChange* i, MidiRegionView* r) - : Drag (e, i->canvas_item ()) + : Drag (e, i->canvas_item (), Temporal::BeatTime) , _region_view (r) , _patch_change (i) , _cumulative_dx (0) @@ -6949,7 +6950,7 @@ EditorRubberbandSelectDrag::deselect_things () } NoteCreateDrag::NoteCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _region_view (rv) , _drag_rect (0) { @@ -7056,7 +7057,7 @@ NoteCreateDrag::aborted (bool) } HitCreateDrag::HitCreateDrag (Editor* e, ArdourCanvas::Item* i, MidiRegionView* rv) - : Drag (e, i) + : Drag (e, i, Temporal::BeatTime) , _region_view (rv) , _last_pos (Temporal::Beats()) , _y (0.0) @@ -7149,7 +7150,7 @@ HitCreateDrag::aborted (bool) } CrossfadeEdgeDrag::CrossfadeEdgeDrag (Editor* e, AudioRegionView* rv, ArdourCanvas::Item* i, bool start_yn) - : Drag (e, i) + : Drag (e, i, Temporal::AudioTime) , arv (rv) , start (start_yn) { @@ -7248,7 +7249,7 @@ CrossfadeEdgeDrag::aborted (bool) } 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) - : Drag (ed, i) + : Drag (ed, i, r->region()->position().time_domain()) , rv (r) , view (static_cast (i->get_data ("marker"))) , model (rv->find_model_cue_marker (view)) diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index f07fa9ae2d..6d1c1d3dff 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -143,7 +143,7 @@ private: class Drag { public: - Drag (Editor *, ArdourCanvas::Item *, bool trackview_only = true); + Drag (Editor *, ArdourCanvas::Item *, Temporal::TimeDomain td, bool trackview_only = true); virtual ~Drag () {} void set_manager (DragManager* m) { @@ -155,6 +155,9 @@ public: return _item; } + Temporal::TimeDomain time_domain() const { return _time_domain; } + + void swap_grab (ArdourCanvas::Item *, Gdk::Cursor *, uint32_t); bool motion_handler (GdkEvent*, bool); 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 _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::TimeDomain _time_domain; /* difference between some key position's snapped and unsnapped * samplepos. used for relative snap.