From 8724a9f68f2854be6c3c70f15efda8076ef5db1d Mon Sep 17 00:00:00 2001 From: nick_m Date: Tue, 10 May 2016 05:25:53 +1000 Subject: Tempo ramps - improve constraint mod + bbt dragging begavior. --- gtk2_ardour/editor_drag.cc | 16 +++++++++++----- gtk2_ardour/tempo_curve.cc | 8 +++++--- 2 files changed, 16 insertions(+), 8 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 52b5ab6d1a..0116f9feaa 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3481,27 +3481,31 @@ BBTRulerDrag::BBTRulerDrag (Editor* e, ArdourCanvas::Item* i) , before_state (0) { DEBUG_TRACE (DEBUG::Drags, "New BBTRulerDrag\n"); - } void BBTRulerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor) { Drag::start_grab (event, cursor); - show_verbose_cursor_time (adjusted_current_frame (event)); + TempoMap& map (_editor->session()->tempo_map()); + ostringstream sstr; + sstr << fixed << setprecision(3) << map.tempo_at (adjusted_current_frame (event)).beats_per_minute(); + show_verbose_cursor_text (sstr.str()); } void BBTRulerDrag::setup_pointer_frame_offset () { - _pointer_frame_offset = 0; + TempoMap& map (_editor->session()->tempo_map()); + _pointer_frame_offset = raw_grab_frame() - map.frame_at_beat (ceil (map.beat_at_frame (raw_grab_frame()))); } void BBTRulerDrag::motion (GdkEvent* event, bool first_move) { + TempoMap& map (_editor->session()->tempo_map()); + if (first_move) { - TempoMap& map (_editor->session()->tempo_map()); /* get current state */ before_state = &map.get_state(); _editor->begin_reversible_command (_("dilate tempo")); @@ -3513,7 +3517,9 @@ BBTRulerDrag::motion (GdkEvent* event, bool first_move) /* adjust previous tempo to match pointer frame */ _editor->session()->tempo_map().gui_dilate_tempo (last_pointer_frame(), pf); } - show_verbose_cursor_time (pf); + ostringstream sstr; + sstr << fixed << setprecision(3) << map.tempo_at (pf).beats_per_minute(); + show_verbose_cursor_text (sstr.str()); } void diff --git a/gtk2_ardour/tempo_curve.cc b/gtk2_ardour/tempo_curve.cc index 8604f7abba..37feb9870d 100644 --- a/gtk2_ardour/tempo_curve.cc +++ b/gtk2_ardour/tempo_curve.cc @@ -78,14 +78,16 @@ TempoCurve::TempoCurve (PublicEditor& ed, ArdourCanvas::Container& parent, guint * make sure they can both be used to lookup this object. */ - group->set_data ("marker", this); + _curve->set_data ("tempo curve", this); + _background->set_data ("tempo curve", this); if (handle_events) { //group->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_marker_event), group, this)); } + set_position (_tempo.frame(), UINT32_MAX); - _curve->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_tempo_curve_event), group, this)); - _background->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_tempo_curve_event), group, this)); + _curve->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_tempo_curve_event), _curve, this)); + _background->Event.connect (sigc::bind (sigc::mem_fun (editor, &PublicEditor::canvas_tempo_curve_event), _background, this)); } -- cgit v1.2.3