summaryrefslogtreecommitdiff
path: root/gtk2_ardour/streamview.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-08-31 22:49:26 +0000
committerCarl Hetherington <carl@carlh.net>2009-08-31 22:49:26 +0000
commit7076f0e88eae85bd5cfbccd9a0997a2647a3c781 (patch)
treec93d06fcf82a6117de9e39afc4f4c0571ae0e04c /gtk2_ardour/streamview.cc
parent1aa38f074f6dfaec52edd9be5a0421a82e39a7fb (diff)
Make drag selection work properly with stacked region mode.
git-svn-id: svn://localhost/ardour2/branches/3.0@5607 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/streamview.cc')
-rw-r--r--gtk2_ardour/streamview.cc21
1 files changed, 19 insertions, 2 deletions
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index fbd48ddbf2..afa41d6f90 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -514,10 +514,27 @@ StreamView::set_selected_regionviews (RegionSelection& regions)
}
void
-StreamView::get_selectables (nframes_t start, nframes_t end, list<Selectable*>& results)
+StreamView::get_selectables (nframes_t start, nframes_t end, double top, double bottom, list<Selectable*>& results)
{
+ layer_t min_layer = 0;
+ layer_t max_layer = 0;
+
+ if (_layer_display == Stacked) {
+ double const c = child_height ();
+ min_layer = _layers - ((bottom - _trackview.y_position()) / c);
+ max_layer = _layers - ((top - _trackview.y_position()) / c);
+ }
+
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- if ((*i)->region()->coverage(start, end) != OverlapNone) {
+
+ bool layer_ok = true;
+
+ if (_layer_display == Stacked) {
+ layer_t const l = (*i)->region()->layer ();
+ layer_ok = (min_layer <= l && l <= max_layer);
+ }
+
+ if ((*i)->region()->coverage (start, end) != OverlapNone && layer_ok) {
results.push_back (*i);
}
}