summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_drag.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_drag.cc')
-rw-r--r--gtk2_ardour/editor_drag.cc36
1 files changed, 33 insertions, 3 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index fb39a34589..0469e45e36 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -36,6 +36,8 @@
#include "audio_time_axis.h"
#include "midi_time_axis.h"
#include "canvas-note.h"
+#include "selection.h"
+#include "midi_selection.h"
using namespace std;
using namespace ARDOUR;
@@ -1415,21 +1417,49 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor *)
} else {
relative = true;
}
+
+ MidiRegionSelection& ms (_editor->get_selection().midi_regions);
+
+ if (ms.size() > 1) {
+ /* has to be relative, may make no sense otherwise */
+ relative = true;
+ }
region->note_selected (cnote, true);
- region->begin_resizing (at_front);
+
+ for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end(); ) {
+ MidiRegionSelection::iterator next;
+ next = r;
+ ++next;
+ (*r)->begin_resizing (at_front);
+ r = next;
+ }
}
void
NoteResizeDrag::motion (GdkEvent* /*event*/, bool first_move)
{
- region->update_resizing (at_front, _current_pointer_x - _grab_x, relative);
+ MidiRegionSelection& ms (_editor->get_selection().midi_regions);
+ for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end();) {
+ MidiRegionSelection::iterator next;
+ next = r;
+ ++next;
+ (*r)->update_resizing (at_front, _current_pointer_x - _grab_x, relative);
+ r = next;
+ }
}
void
NoteResizeDrag::finished (GdkEvent* event, bool movement_occurred)
{
- region->commit_resizing (at_front, _current_pointer_x - _grab_x, relative);
+ MidiRegionSelection& ms (_editor->get_selection().midi_regions);
+ for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end();) {
+ MidiRegionSelection::iterator next;
+ next = r;
+ ++next;
+ (*r)->commit_resizing (at_front, _current_pointer_x - _grab_x, relative);
+ r = next;
+ }
}
void