diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 0cf148d7f2..011a4c8ab8 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -3449,8 +3449,8 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred) settings->property_gtk_double_click_time() + 10); return; } else if (loc->is_auto_loop()) { - /* click on loop marker: locate */ - _editor->session()->request_locate (grab_frame(), _editor->session()->transport_rolling()); + /* toggle loop playback, leave rolling if already rolling */ + _editor->session()->request_play_loop (!_editor->session()->get_play_loop(), true); return; } } @@ -4614,9 +4614,11 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) } } else { - - /* locate playhead */ - _editor->session()->request_locate (grab_frame(), _editor->session()->transport_rolling()); + /* toggle loop playback, leave rolling if already rolling */ + _editor->session()->request_play_loop (!_editor->session()->get_play_loop(), true); + /* locate to start of loop */ + _editor->session()->request_locate (_editor->temp_location->start(), _editor->session()->transport_rolling()); + } _editor->stop_canvas_autoscroll (); diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 06b570f0d6..ca724cca1c 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -635,9 +635,12 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT Location* l = m->location(); if (l && l->is_auto_loop()) { if (Config->get_loop_is_mode() && !_session->get_play_loop() ) { - /* play loop is disabled, use drag to create new Loop range */ + /* play loop is disabled, use drag to create new Loop range or toggle loop playback */ _drags->set (new RangeMarkerBarDrag (this, clock_ruler, RangeMarkerBarDrag::CreateLoopMarker), event); return true; + } else { + _drags->set (new MarkerDrag (this, item), event); + return true; } } }