summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-06-03 15:57:56 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-03 16:13:12 -0400
commite0533e9dd7df504236892fe0d8693e7ad9a6a278 (patch)
tree43d6f88e7d8cec6acf9db9965ec6536f2349a1c0 /gtk2_ardour/editor.cc
parentd4989ed9cedcfbff48f6131c595691005283a435 (diff)
more profound changes to canvas scrolling, in particular find appropriate ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}()
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r--gtk2_ardour/editor.cc24
1 files changed, 17 insertions, 7 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 5d16b09c02..f38cbb217b 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2421,21 +2421,31 @@ Editor::get_state ()
return *node;
}
-
-
-/** @param y y offset from the top of all trackviews.
+/** @param y y is in canvas coordinate space, in pixel units
+ *
* @return pair: TimeAxisView that y is over, layer index.
+ *
* TimeAxisView may be 0. Layer index is the layer number if the TimeAxisView is valid and is
* in stacked or expanded region display mode, otherwise 0.
*/
std::pair<TimeAxisView *, double>
Editor::trackview_by_y_position (double y)
{
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+ /* convert y into an offset within the trackview group */
+
+ ArdourCanvas::Duple top_of_trackviews_canvas = _trackview_group->item_to_canvas (ArdourCanvas::Duple (0, 0));
+
+ if (y >= top_of_trackviews_canvas.y) {
+
+ y -= top_of_trackviews_canvas.y;
- std::pair<TimeAxisView*, double> const r = (*iter)->covers_y_position (y);
- if (r.first) {
- return r;
+ for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ std::pair<TimeAxisView*, double> const r = (*iter)->covers_y_position (y);
+
+ if (r.first) {
+ return r;
+ }
}
}