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
This commit is contained in:
Paul Davis 2016-07-12 11:19:34 -04:00
parent 472ef8c55c
commit 774ad0752a
3 changed files with 19 additions and 0 deletions

View File

@ -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);
}
}
}

View File

@ -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"));

View File

@ -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;
}