diff options
author | Carl Hetherington <carl@carlh.net> | 2011-10-22 22:10:37 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-10-22 22:10:37 +0000 |
commit | 12f443c72109b9a6d3356610a43d01b317f3c788 (patch) | |
tree | 8b0b87a6a0e4c34cb2980e49b11994cf03a90fc1 /gtk2_ardour/streamview.cc | |
parent | 6d66f90c5c143a6c584629e495e925b4fcf7767f (diff) |
Fix underflow in layer_t with rubber band selection on multiple tracks with stacked region display (#4103).
git-svn-id: svn://localhost/ardour2/branches/3.0@10286 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/streamview.cc')
-rw-r--r-- | gtk2_ardour/streamview.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 55e2020874..10a9b91633 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -523,8 +523,21 @@ StreamView::get_selectables (framepos_t start, framepos_t end, double top, doubl 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); + + int const mi = _layers - ((bottom - _trackview.y_position()) / c); + if (mi < 0) { + min_layer = 0; + } else { + min_layer = mi; + } + + int const ma = _layers - ((top - _trackview.y_position()) / c); + if (ma > _layers) { + max_layer = _layers - 1; + } else { + max_layer = ma; + } + } for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) { |