diff options
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 09182261d9..0508a7a6df 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4479,6 +4479,9 @@ Editor::set_loop_from_edit_range (bool play) void Editor::set_loop_from_region (bool play) { + nframes64_t start = max_frames; + nframes64_t end = 0; + ensure_entered_region_selected (true); if (selection->regions.empty()) { @@ -4486,8 +4489,14 @@ Editor::set_loop_from_region (bool play) return; } - nframes64_t start = selection->regions.front()->region()->first_frame(); - nframes64_t end = selection->regions.front()->region()->last_frame() + 1; + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + if ((*i)->region()->position() < start) { + start = (*i)->region()->position(); + } + if ((*i)->region()->last_frame() + 1 > end) { + end = (*i)->region()->last_frame() + 1; + } + } set_loop_range (start, end, _("set loop range from region")); |