summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-05-10 05:25:53 +1000
committernick_m <mainsbridge@gmail.com>2016-05-27 23:38:16 +1000
commit8724a9f68f2854be6c3c70f15efda8076ef5db1d (patch)
tree01f4aa04f869d330676b401dc86da1324f982055 /gtk2_ardour
parentccf6ce76d9d651a27c08bbd9d1cd2259acf5e026 (diff)
Tempo ramps - improve constraint mod + bbt dragging begavior.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc16
-rw-r--r--gtk2_ardour/tempo_curve.cc8
2 files changed, 16 insertions, 8 deletions
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));
}