summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_drag.cc5
-rw-r--r--gtk2_ardour/editor_ops.cc8
-rw-r--r--gtk2_ardour/midi_region_view.cc11
-rw-r--r--gtk2_ardour/midi_region_view.h1
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