From 774ad0752ab0f5ba7ae86e0d90ae622df3b41777 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 12 Jul 2016 11:19:34 -0400 Subject: [PATCH] GUI side of : once the user has explicitly set the session range end, playlist/range changes do not move it. The user may drag the marker, edit in the Location UI, or use nudge, to set the end --- gtk2_ardour/editor_drag.cc | 4 ++++ gtk2_ardour/editor_ops.cc | 6 ++++++ gtk2_ardour/location_ui.cc | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 4516eefb62..5a0695134f 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4244,6 +4244,10 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred) } else { location->set (((*x).location)->start(), ((*x).location)->end()); } + + if (location->is_session_range()) { + _editor->session()->set_end_is_free (false); + } } } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 63d3570b8b..50d1bcc24c 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -433,6 +433,9 @@ Editor::nudge_forward (bool next, bool force_playhead) } else { loc->set_end (max_framepos); } + if (loc->is_session_range()) { + _session->set_end_is_free (false); + } } if (!in_command) { begin_reversible_command (_("nudge location forward")); @@ -524,6 +527,9 @@ Editor::nudge_backward (bool next, bool force_playhead) } else { loc->set_end (loc->length()); } + if (loc->is_session_range()) { + _session->set_end_is_free (false); + } } if (!in_command) { begin_reversible_command (_("nudge location forward")); diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc index e41ad712e4..7dfc2ecbce 100644 --- a/gtk2_ardour/location_ui.cc +++ b/gtk2_ardour/location_ui.cc @@ -420,6 +420,9 @@ LocationEditRow::to_playhead_button_pressed (LocationPart part) break; case LocEnd: location->set_end (_session->transport_frame ()); + if (location->is_session_range()) { + _session->set_end_is_free (false); + } break; default: break; @@ -464,9 +467,15 @@ LocationEditRow::clock_changed (LocationPart part) break; case LocEnd: location->set_end (end_clock.current_time()); + if (location->is_session_range()) { + _session->set_end_is_free (false); + } break; case LocLength: location->set_end (location->start() + length_clock.current_duration()); + if (location->is_session_range()) { + _session->set_end_is_free (false); + } default: break; }