changes to get closer to PRD for clicks in loop lane and on loop marker

This commit is contained in:
Paul Davis 2014-12-29 22:47:00 -05:00
parent 633b57ca61
commit 885c4e762f
2 changed files with 11 additions and 6 deletions

View file

@ -3449,8 +3449,8 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred)
settings->property_gtk_double_click_time() + 10); settings->property_gtk_double_click_time() + 10);
return; return;
} else if (loc->is_auto_loop()) { } else if (loc->is_auto_loop()) {
/* click on loop marker: locate */ /* toggle loop playback, leave rolling if already rolling */
_editor->session()->request_locate (grab_frame(), _editor->session()->transport_rolling()); _editor->session()->request_play_loop (!_editor->session()->get_play_loop(), true);
return; return;
} }
} }
@ -4614,9 +4614,11 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred)
} }
} else { } else {
/* 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());
/* locate playhead */
_editor->session()->request_locate (grab_frame(), _editor->session()->transport_rolling());
} }
_editor->stop_canvas_autoscroll (); _editor->stop_canvas_autoscroll ();

View file

@ -635,9 +635,12 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
Location* l = m->location(); Location* l = m->location();
if (l && l->is_auto_loop()) { if (l && l->is_auto_loop()) {
if (Config->get_loop_is_mode() && !_session->get_play_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); _drags->set (new RangeMarkerBarDrag (this, clock_ruler, RangeMarkerBarDrag::CreateLoopMarker), event);
return true; return true;
} else {
_drags->set (new MarkerDrag (this, item), event);
return true;
} }
} }
} }