summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_canvas_events.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-06-30 14:47:57 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-30 14:47:57 -0400
commit7b8fd17719e7b5bdd6a59e0ce4d9bf5c4d0773a4 (patch)
tree78a6f44116c806ec2330c9d89a5580aafa5538d6 /gtk2_ardour/editor_canvas_events.cc
parent89f673a7a7db1e44eb4d9a3a558c4479a4c2ae03 (diff)
make canvas drop sensitive to scroll events
Diffstat (limited to 'gtk2_ardour/editor_canvas_events.cc')
-rw-r--r--gtk2_ardour/editor_canvas_events.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc
index 8efb3d56e9..2609abadc8 100644
--- a/gtk2_ardour/editor_canvas_events.cc
+++ b/gtk2_ardour/editor_canvas_events.cc
@@ -73,7 +73,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
*/
Duple event_coords = _track_canvas->window_to_canvas (Duple (ev->x, ev->y));
-
+
retry:
switch (direction) {
case GDK_SCROLL_UP:
@@ -1104,6 +1104,9 @@ Editor::canvas_note_event (GdkEvent *event, ArdourCanvas::Item* item)
bool
Editor::canvas_drop_zone_event (GdkEvent* event)
{
+ GdkEventScroll scroll;
+ ArdourCanvas::Duple winpos;
+
switch (event->type) {
case GDK_BUTTON_RELEASE:
if (event->button.button == 1) {
@@ -1111,6 +1114,18 @@ Editor::canvas_drop_zone_event (GdkEvent* event)
selection->clear_tracks ();
}
break;
+
+ case GDK_SCROLL:
+ /* convert coordinates back into window space so that
+ we can just call canvas_scroll_event().
+ */
+ winpos = _track_canvas->canvas_to_window (Duple (event->scroll.x, event->scroll.y));
+ scroll = event->scroll;
+ scroll.x = winpos.x;
+ scroll.y = winpos.y;
+ return canvas_scroll_event (&scroll, true);
+ break;
+
default:
break;
}