summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_selection.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-10-07 21:11:19 +0000
committerDavid Robillard <d@drobilla.net>2011-10-07 21:11:19 +0000
commit8be2e11c653031f2a367cf7c7b6f2320d935684c (patch)
tree8e51759d00e8335a818e7e9e6739c366b7f68a55 /gtk2_ardour/editor_selection.cc
parent1567d362ad42a8a38b62c03fbf1d2fecdfd0937c (diff)
Implement range selecting for MIDI notes (#4087).
git-svn-id: svn://localhost/ardour2/branches/3.0@10199 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_selection.cc')
-rw-r--r--gtk2_ardour/editor_selection.cc40
1 files changed, 36 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 6e37868aa3..c598116bad 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -1521,12 +1521,10 @@ Editor::select_all_selectables_using_cursor (EditorCursor *cursor, bool after)
list<Selectable *> touched;
if (after) {
- begin_reversible_command (_("select all after cursor"));
start = cursor->current_frame;
end = _session->current_end_frame();
} else {
if (cursor->current_frame > 0) {
- begin_reversible_command (_("select all before cursor"));
start = 0;
end = cursor->current_frame - 1;
} else {
@@ -1534,6 +1532,21 @@ Editor::select_all_selectables_using_cursor (EditorCursor *cursor, bool after)
}
}
+ if (_internal_editing) {
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
+ if (mrv) {
+ mrv->select_range (start, end);
+ }
+ }
+ return;
+ }
+
+ if (after) {
+ begin_reversible_command (_("select all after cursor"));
+ } else {
+ begin_reversible_command (_("select all before cursor"));
+ }
TrackViewList* ts;
@@ -1561,12 +1574,10 @@ Editor::select_all_selectables_using_edit (bool after)
list<Selectable *> touched;
if (after) {
- begin_reversible_command (_("select all after edit"));
start = get_preferred_edit_position();
end = _session->current_end_frame();
} else {
if ((end = get_preferred_edit_position()) > 1) {
- begin_reversible_command (_("select all before edit"));
start = 0;
end -= 1;
} else {
@@ -1574,6 +1585,19 @@ Editor::select_all_selectables_using_edit (bool after)
}
}
+ if (_internal_editing) {
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
+ mrv->select_range (start, end);
+ }
+ return;
+ }
+
+ if (after) {
+ begin_reversible_command (_("select all after edit"));
+ } else {
+ begin_reversible_command (_("select all before edit"));
+ }
TrackViewList* ts;
@@ -1604,6 +1628,14 @@ Editor::select_all_selectables_between (bool /*within*/)
return;
}
+ if (_internal_editing) {
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
+ mrv->select_range (start, end);
+ }
+ return;
+ }
+
TrackViewList* ts;
if (selection->tracks.empty()) {