summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-03-07 11:22:49 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-03-07 11:22:49 -0500
commit0ef3fedf9aa59992a134dfde6f387efd96d3d74f (patch)
tree512dc243222360e6637e5ee84f20d6201a19eec5
parent770dbf8fdcbf25aa99a51edce739e07dfff1b1f6 (diff)
fix up some logic that allowed hits (percussive note display) to be trimmed with the mouse, which was not intended
-rw-r--r--gtk2_ardour/editor_mouse.cc16
1 files 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<NoteBase*>(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<NoteBase*> (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<NoteBase*>(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 */