diff options
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.h | 1 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 3eeca0a6bc..0b5b789e9e 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1529,7 +1529,10 @@ NoteResizeDrag::finished (GdkEvent*, bool /*movement_occurred*/) void NoteResizeDrag::aborted (bool) { - /* XXX: TODO */ + MidiRegionSelection& ms (_editor->get_selection().midi_regions); + for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end(); ++r) { + (*r)->abort_resizing (); + } } RegionGainDrag::RegionGainDrag (Editor* e, ArdourCanvas::Item* i) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 4a9183ddd2..c598af2453 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -104,6 +104,10 @@ using Gtkmm2ext::Keyboard; void Editor::undo (uint32_t n) { + if (_drags->active ()) { + _drags->abort (); + } + if (_session) { _session->undo (n); } @@ -112,6 +116,10 @@ Editor::undo (uint32_t n) void Editor::redo (uint32_t n) { + if (_drags->active ()) { + _drags->abort (); + } + if (_session) { _session->redo (n); } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 8a6ad8c95d..998330d8bb 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2678,6 +2678,17 @@ MidiRegionView::commit_resizing (ArdourCanvas::CanvasNoteEvent* primary, bool at } void +MidiRegionView::abort_resizing () +{ + for (std::vector<NoteResizeData *>::iterator i = _resize_data.begin(); i != _resize_data.end(); ++i) { + delete (*i)->resize_rect; + delete *i; + } + + _resize_data.clear (); +} + +void MidiRegionView::change_note_velocity(CanvasNoteEvent* event, int8_t velocity, bool relative) { uint8_t new_velocity; diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 081a68e101..c64f4de0a4 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -218,6 +218,7 @@ public: void update_resizing (ArdourCanvas::CanvasNoteEvent*, bool, double, bool); void commit_resizing (ArdourCanvas::CanvasNoteEvent*, bool, double, bool); + void abort_resizing (); /** Change the channel of the selection. * @param channel - the channel number of the new channel, zero-based |