shift-click on shuttle controller in wheel mode resets it to 1.0 (100%) (#4994)
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 9 Jul 2012 19:51:09 +0000 (19:51 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 9 Jul 2012 19:51:09 +0000 (19:51 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@13000 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/shuttle_control.cc

index 88159fe0209b2b943121e3bcd3c37bb78525cca4..3f18c26feb5050995f4cbb83dbba79a7f09f96c2 100644 (file)
@@ -241,10 +241,16 @@ ShuttleControl::on_button_press_event (GdkEventButton* ev)
 
        switch (ev->button) {
        case 1:
-               add_modal_grab ();
-               shuttle_grabbed = true;
-               shuttle_speed_on_grab = _session->transport_speed ();
-               mouse_shuttle (ev->x, true);
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
+                       if (_session->transport_rolling()) {
+                               _session->request_transport_speed (1.0);
+                       }
+               } else {
+                       add_modal_grab ();
+                       shuttle_grabbed = true;
+                       shuttle_speed_on_grab = _session->transport_speed ();
+                       mouse_shuttle (ev->x, true);
+               }
                break;
 
        case 2:
@@ -265,15 +271,16 @@ ShuttleControl::on_button_release_event (GdkEventButton* ev)
 
        switch (ev->button) {
        case 1:
-               shuttle_grabbed = false;
-               remove_modal_grab ();
-
-               if (Config->get_shuttle_behaviour() == Sprung) {
-                       _session->request_transport_speed (shuttle_speed_on_grab);
-               } else {
-                       mouse_shuttle (ev->x, true);
+               if (shuttle_grabbed) {
+                       shuttle_grabbed = false;
+                       remove_modal_grab ();
+                       
+                       if (Config->get_shuttle_behaviour() == Sprung) {
+                               _session->request_transport_speed (shuttle_speed_on_grab);
+                       } else {
+                               mouse_shuttle (ev->x, true);
+                       }
                }
-
                return true;
 
        case 2: