Return shuttle speed to previous value on release after sprung grab (#4039).
authorCarl Hetherington <carl@carlh.net>
Fri, 13 May 2011 17:25:02 +0000 (17:25 +0000)
committerCarl Hetherington <carl@carlh.net>
Fri, 13 May 2011 17:25:02 +0000 (17:25 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9506 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/shuttle_control.cc
gtk2_ardour/shuttle_control.h

index 1274dce6f85c992a584ac007403a1c88f2fde0e6..5193e4cb6e060d252b0397ef4bc24f7c5b7d89f6 100644 (file)
@@ -54,6 +54,7 @@ ShuttleControl::ShuttleControl ()
        last_shuttle_request = 0;
        last_speed_displayed = -99999999;
        shuttle_grabbed = false;
+       shuttle_speed_on_grab = 0;
        shuttle_fract = 0.0;
        shuttle_max_speed = 8.0f;
        shuttle_style_menu = 0;
@@ -236,6 +237,7 @@ ShuttleControl::on_button_press_event (GdkEventButton* ev)
        case 1:
                add_modal_grab ();
                shuttle_grabbed = true;
+               shuttle_speed_on_grab = _session->transport_speed ();
                mouse_shuttle (ev->x, true);
                break;
 
@@ -261,11 +263,7 @@ ShuttleControl::on_button_release_event (GdkEventButton* ev)
                remove_modal_grab ();
 
                if (Config->get_shuttle_behaviour() == Sprung) {
-                       if (_session->config.get_auto_play()) {
-                               _session->request_transport_speed (1.0);
-                       } else {
-                               _session->request_transport_speed (0.0);
-                       }
+                       _session->request_transport_speed (shuttle_speed_on_grab);
                } else {
                         mouse_shuttle (ev->x, true);
                 }
index 7f8176ea01b69e559891fa6fbf1c683d5240d17a..836ac535ed95488cf6e2011446e6d99f519ccab2 100644 (file)
@@ -60,6 +60,7 @@ class ShuttleControl : public Gtk::DrawingArea, public ARDOUR::SessionHandlePtr
        float  shuttle_max_speed;
        float  last_speed_displayed;
        bool   shuttle_grabbed;
+       double shuttle_speed_on_grab;
        float shuttle_fract;
        boost::shared_ptr<ShuttleControllable> _controllable;
        cairo_pattern_t* pattern;