summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-06-05 17:06:36 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-05 17:06:36 -0400
commiteec24b6287004f977146eb831108029745fb313f (patch)
tree6d7685d87b834ae4a179ae3b3f3d2eaf154c56e4 /gtk2_ardour
parent24e357ae19d8fa0b0b9e8729b1a91c7bf80d7708 (diff)
fix up drawing and selection process for range selections (caused by subtle change in semantics of TimeAxisView::covered_by_y_range())
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_drag.cc39
1 files changed, 24 insertions, 15 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 228812a2dc..d4a6c8e00f 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -3948,25 +3948,34 @@ SelectionDrag::motion (GdkEvent* event, bool first_move)
TrackViewList to_be_removed_from_selection;
TrackViewList& all_tracks (_editor->track_views);
- for (TrackViewList::const_iterator i = all_tracks.begin(); i != all_tracks.end(); ++i) {
+ // /* convert grab_y and current_pointer_y into offsets within the trackview group */
+
+ ArdourCanvas::Duple const top_of_trackviews_canvas = _editor->get_trackview_group()->item_to_canvas (ArdourCanvas::Duple (0, 0));
+ ArdourCanvas::Coord const top = grab_y() - top_of_trackviews_canvas.y;
+ ArdourCanvas::Coord const bottom = _drags->current_pointer_y() - top_of_trackviews_canvas.y;
+
+ if (top >= 0 && bottom >= 0) {
+
+ for (TrackViewList::const_iterator i = all_tracks.begin(); i != all_tracks.end(); ++i) {
- if ((*i)->covered_by_y_range (grab_y(), _drags->current_pointer_y())) {
- if (!(*i)->get_selected()) {
- to_be_added_to_selection.push_back (*i);
- }
- } else {
- if ((*i)->get_selected()) {
- to_be_removed_from_selection.push_back (*i);
+ if ((*i)->covered_by_y_range (top, bottom)) {
+ if (!(*i)->get_selected()) {
+ to_be_added_to_selection.push_back (*i);
+ }
+ } else {
+ if ((*i)->get_selected()) {
+ to_be_removed_from_selection.push_back (*i);
+ }
}
}
- }
-
- if (!to_be_added_to_selection.empty()) {
- _editor->selection->add (to_be_added_to_selection);
- }
- if (!to_be_removed_from_selection.empty()) {
- _editor->selection->remove (to_be_removed_from_selection);
+ if (!to_be_added_to_selection.empty()) {
+ _editor->selection->add (to_be_added_to_selection);
+ }
+
+ if (!to_be_removed_from_selection.empty()) {
+ _editor->selection->remove (to_be_removed_from_selection);
+ }
}
}
break;