summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2014-07-09 14:45:20 -0500
committerBen Loftis <ben@harrisonconsoles.com>2014-07-09 14:45:20 -0500
commitbff786257ea14ca707655e99d7ecdf47d2027002 (patch)
tree95713b3a6eb98ac038fac585ea53d1fe83db988d /gtk2_ardour
parent12699574ae42e9297e1978a35f1b5a732efba625 (diff)
polish a few blemishes and add some comments
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc26
1 files changed, 12 insertions, 14 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index caa807de3d..41044a4577 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -4240,8 +4240,7 @@ SelectionDrag::motion (GdkEvent* event, bool first_move)
}
/* select all tracks within the rectangle that we've marked out so far */
- TrackViewList to_be_added_to_selection;
- TrackViewList to_be_removed_from_selection;
+ TrackViewList new_selection;
TrackViewList& all_tracks (_editor->track_views);
ArdourCanvas::Coord const top = grab_y();
@@ -4249,27 +4248,28 @@ SelectionDrag::motion (GdkEvent* event, bool first_move)
if (top >= 0 && bottom >= 0) {
+ //first, find the tracks that are covered in the y range selection
for (TrackViewList::const_iterator i = all_tracks.begin(); i != all_tracks.end(); ++i) {
-
if ((*i)->covered_by_y_range (top, bottom)) {
- to_be_added_to_selection.push_back (*i);
+ new_selection.push_back (*i);
}
}
- //add any tracks that are GROUPED with the tracks we selected
- TrackViewList grouped_add = to_be_added_to_selection;
- for (TrackViewList::const_iterator i = to_be_added_to_selection.begin(); i != to_be_added_to_selection.end(); ++i) {
- RouteTimeAxisView *add = dynamic_cast<RouteTimeAxisView *>(*i);
- if ( add && add->route()->route_group() && add->route()->route_group()->is_active() ) {
+ //now find any tracks that are GROUPED with the tracks we selected
+ TrackViewList grouped_add = new_selection;
+ for (TrackViewList::const_iterator i = new_selection.begin(); i != new_selection.end(); ++i) {
+ RouteTimeAxisView *n = dynamic_cast<RouteTimeAxisView *>(*i);
+ if ( n && n->route()->route_group() && n->route()->route_group()->is_active() ) {
for (TrackViewList::const_iterator j = all_tracks.begin(); j != all_tracks.end(); ++j) {
- RouteTimeAxisView *rem = dynamic_cast<RouteTimeAxisView *>(*j);
- if ( rem && (add != rem) && (rem->route()->route_group() == add->route()->route_group()) )
+ RouteTimeAxisView *check = dynamic_cast<RouteTimeAxisView *>(*j);
+ if ( check && (n != check) && (check->route()->route_group() == n->route()->route_group()) )
grouped_add.push_back (*j);
}
}
}
- //now compare our list with the current selection, and add or remove as necessary ( most mouse moves don't change the selection so we can't just SET it for every mouse move; it gets clunky )
+ //now compare our list with the current selection, and add or remove as necessary
+ //( NOTE: most mouse moves don't change the selection so we can't just SET it for every mouse move; it gets clunky )
TrackViewList tracks_to_add;
TrackViewList tracks_to_remove;
for (TrackViewList::const_iterator i = grouped_add.begin(); i != grouped_add.end(); ++i)
@@ -4278,10 +4278,8 @@ SelectionDrag::motion (GdkEvent* event, bool first_move)
for (TrackViewList::const_iterator i = _editor->selection->tracks.begin(); i != _editor->selection->tracks.end(); ++i)
if ( !grouped_add.contains ( *i ) )
tracks_to_remove.push_back ( *i );
-
_editor->selection->add(tracks_to_add);
_editor->selection->remove(tracks_to_remove);
-
}
}