X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fshuttle_control.cc;h=fec3547e1ea8cb2cfee1699f09608b8489554f32;hb=994df3aaa370125d3fa442baa38392a32c640e69;hp=c423c21679ac332b9f2e946a49d65aa9aa8ffd1e;hpb=3d5491d0d0501acbcaafa1a5a5b811c5eeaf9c00;p=ardour.git diff --git a/gtk2_ardour/shuttle_control.cc b/gtk2_ardour/shuttle_control.cc index c423c21679..fec3547e1e 100644 --- a/gtk2_ardour/shuttle_control.cc +++ b/gtk2_ardour/shuttle_control.cc @@ -36,7 +36,7 @@ #include "shuttle_control.h" #include "tooltips.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace Gtk; using namespace Gtkmm2ext; @@ -104,6 +104,7 @@ ShuttleControl::~ShuttleControl () { cairo_pattern_destroy (pattern); cairo_pattern_destroy (shine_pattern); + delete text_color; } void @@ -310,6 +311,7 @@ ShuttleControl::on_button_press_event (GdkEventButton* ev) add_modal_grab (); shuttle_grabbed = true; shuttle_speed_on_grab = _session->transport_speed (); + requested_speed = shuttle_speed_on_grab; mouse_shuttle (ev->x, true); gdk_pointer_grab(ev->window,false, GdkEventMask( Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK |Gdk::BUTTON_RELEASE_MASK), @@ -555,6 +557,7 @@ ShuttleControl::use_shuttle_fract (bool force, bool zero_ok) speed = shuttle_max_speed * shuttle_fract; } + requested_speed = speed; if (zero_ok) { _session->request_transport_speed (speed, Config->get_shuttle_behaviour() == Wheel); } else { @@ -597,9 +600,14 @@ ShuttleControl::render (cairo_t* cr, cairo_rectangle_t*) cairo_fill (cr); float speed = 0.0; + float acutal_speed = 0.0; if (_session) { speed = _session->transport_speed (); + acutal_speed = speed; + if (shuttle_grabbed) { + speed = requested_speed; + } } /* Marker */ @@ -625,24 +633,24 @@ ShuttleControl::render (cairo_t* cr, cairo_rectangle_t*) char buf[32]; - if (speed != 0) { + if (acutal_speed != 0) { if (Config->get_shuttle_units() == Percentage) { - if (speed == 1.0) { + if (acutal_speed == 1.0) { snprintf (buf, sizeof (buf), "%s", _("Playing")); } else { - if (speed < 0.0) { - snprintf (buf, sizeof (buf), "<<< %.1f%%", -speed * 100.f); + if (acutal_speed < 0.0) { + snprintf (buf, sizeof (buf), "<<< %.1f%%", -acutal_speed * 100.f); } else { - snprintf (buf, sizeof (buf), ">>> %.1f%%", speed * 100.f); + snprintf (buf, sizeof (buf), ">>> %.1f%%", acutal_speed * 100.f); } } } else { bool reversed; - int semi = speed_as_semitones (speed, reversed); + int semi = speed_as_semitones (acutal_speed, reversed); if (reversed) { snprintf (buf, sizeof (buf), _("<<< %+d semitones"), semi); @@ -655,7 +663,7 @@ ShuttleControl::render (cairo_t* cr, cairo_rectangle_t*) snprintf (buf, sizeof (buf), "%s", _("Stopped")); } - last_speed_displayed = speed; + last_speed_displayed = acutal_speed; const float top_text_margin = 3.0f; const float side_text_margin = 5.0f;