make canvas drop sensitive to scroll events
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 30 Jun 2014 18:47:57 +0000 (14:47 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 30 Jun 2014 18:47:57 +0000 (14:47 -0400)
gtk2_ardour/editor_canvas_events.cc

index 8efb3d56e958ab2f9e7b7ce18ad1825c0ee9ddae..2609abadc84c2779f687211730a9821a217f2aab 100644 (file)
@@ -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;
        }