From 0ef3fedf9aa59992a134dfde6f387efd96d3d74f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 7 Mar 2014 11:22:49 -0500 Subject: fix up some logic that allowed hits (percussive note display) to be trimmed with the mouse, which was not intended --- gtk2_ardour/editor_mouse.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 9508b2abf5..87a37d7f2d 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -925,17 +925,18 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case MouseDraw: switch (item_type) { case NoteItem: + /* Existing note: allow trimming/motion */ if (internal_editing()) { /* trim notes if we're in internal edit mode and near the ends of the note */ NoteBase* cn = reinterpret_cast(item->get_data ("notebase")); assert (cn); - if (cn && cn->big_enough_to_trim() && cn->mouse_near_ends()) { + if (cn->big_enough_to_trim() && cn->mouse_near_ends()) { _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor); } else { _drags->set (new NoteDrag (this, item), event); } return true; - } + } break; case StreamItem: if (internal_editing()) { @@ -954,10 +955,11 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case MouseObject: switch (item_type) { case NoteItem: + /* Existing note: allow trimming/motion */ if (internal_editing()) { NoteBase* cn = reinterpret_cast (item->get_data ("notebase")); assert (cn); - if (cn->mouse_near_ends()) { + if (cn->big_enough_to_trim() && cn->mouse_near_ends()) { _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor); } else { _drags->set (new NoteDrag (this, item), event); @@ -1205,9 +1207,13 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT break; case MouseTimeFX: - if (internal_editing() && item_type == NoteItem) { + if (internal_editing() && item_type == NoteItem ) { /* drag notes if we're in internal edit mode */ - _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor); + NoteBase* cn = reinterpret_cast(item->get_data ("notebase")); + assert (cn); + if (cn->big_enough_to_trim()) { + _drags->set (new NoteResizeDrag (this, item), event, current_canvas_cursor); + } return true; } else if (clicked_regionview) { /* do time-FX */ -- cgit v1.2.3