From 5e89a0d704fa99c68289339883216a2a8f021efd Mon Sep 17 00:00:00 2001 From: GZharun Date: Fri, 6 Feb 2015 14:54:07 +0200 Subject: [PATCH] [Summary] loop range must not be activated/deactivated when clicking outside it --- gtk2_ardour/editor_drag.cc | 20 +++++++++++++++----- gtk2_ardour/editor_drag.h | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index f12555b52f..86fde814f4 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4640,11 +4640,11 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) break; } - case CreateMarker: + case CreateMarker: case CreateTransportMarker: break; - case CreateLoopMarker: + case CreateLoopMarker: /* Ardour used to offer a menu to choose between setting loop + autopunch range here */ _editor->set_loop_range (_editor->temp_location->start(), _editor->temp_location->end(), _("set loop range")); break; @@ -4660,9 +4660,19 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) break; case CreateLoopMarker: { - // toggle loop playback, leave rolling if already rolling - _editor->session()->request_play_loop (!_editor->session()->get_play_loop(), false); - break; + Location* loop = _editor->session()->locations()->auto_loop_location(); + + if (loop) { + framepos_t start = loop->start (); + framepos_t end = loop->end (); + framepos_t const pf = adjusted_current_frame (event); + + if (start <= pf && pf <= end) { + // toggle loop playback, leave rolling if already rolling + _editor->session()->request_play_loop (!_editor->session()->get_play_loop(), false); + break; + } + } } } } diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 93f619c856..483bcbd95b 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -237,6 +237,8 @@ protected: double current_pointer_x () const; double current_pointer_y () const; + bool first_move_occured () { return _starting_point_passed; } + boost::shared_ptr add_midi_region (MidiTimeAxisView*); void show_verbose_cursor_time (framepos_t) const;