more tweaking of color management.
[ardour.git] / gtk2_ardour / editor_canvas_events.cc
index a867fae24fdae57b4ba0d1b35340c2be5a93364e..bbe5a1a5b3957137c34d31768f3383a8157f4156 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "canvas/canvas.h"
 #include "canvas/text.h"
+#include "canvas/scroll_group.h"
 
 #include "editor.h"
 #include "keyboard.h"
@@ -72,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:
@@ -99,7 +100,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
                        current_stepping_trackview->step_height (false);
                        return true;
                } else {
-                       scroll_tracks_up_line ();
+                       scroll_up_one_track ();
                        return true;
                }
                break;
@@ -128,7 +129,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
                        current_stepping_trackview->step_height (true);
                        return true;
                } else {
-                       scroll_tracks_down_line ();
+                       scroll_down_one_track ();
                        return true;
                }
                break;
@@ -199,16 +200,6 @@ Editor::track_canvas_motion_notify_event (GdkEventMotion */*event*/)
        return false;
 }
 
-bool
-Editor::track_canvas_motion (GdkEvent *ev)
-{
-       if (_verbose_cursor->visible ()) {
-               _verbose_cursor->set_position (ev->motion.x + 10, ev->motion.y + 10);
-       }
-
-       return false;
-}
-
 bool
 Editor::typed_event (ArdourCanvas::Item* item, GdkEvent *event, ItemType type)
 {
@@ -1094,12 +1085,6 @@ Editor::canvas_playhead_cursor_event (GdkEvent *event, ArdourCanvas::Item* item)
        return typed_event (item, event, PlayheadCursorItem);
 }
 
-bool
-Editor::canvas_zoom_rect_event (GdkEvent *event, ArdourCanvas::Item* item)
-{
-       return typed_event (item, event, NoItem);
-}
-
 bool
 Editor::canvas_note_event (GdkEvent *event, ArdourCanvas::Item* item)
 {
@@ -1113,6 +1098,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) {
@@ -1120,6 +1108,24 @@ 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;
+
+       case GDK_ENTER_NOTIFY:
+               return typed_event (_canvas_drop_zone, event, DropZoneItem);
+
+       case GDK_LEAVE_NOTIFY:
+               return typed_event (_canvas_drop_zone, event, DropZoneItem);
+
        default:
                break;
        }
@@ -1151,7 +1157,7 @@ Editor::track_canvas_drag_motion (Glib::RefPtr<Gdk::DragContext> const& context,
 
        (void) window_event_sample (&event, &px, &py);
 
-       std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py);
+       std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py, false);
        bool can_drop = false;
        
        if (tv.first != 0) {
@@ -1234,7 +1240,7 @@ Editor::drop_regions (const Glib::RefPtr<Gdk::DragContext>& /*context*/,
 
        framepos_t const pos = window_event_sample (&event, &px, &py);
 
-       std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py);
+       std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py, false);
 
        if (tv.first != 0) {