framework for handling events on the xfade rects
[ardour.git] / gtk2_ardour / editor_canvas_events.cc
index 72de3535001b18b407d57e0602a61030e35b213a..a123ea1e9cec7e98d4dd1fa70e2e2ea45087bb2b 100644 (file)
@@ -348,6 +348,74 @@ Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item
        return ret;
 }
 
+bool
+Editor::canvas_start_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
+{
+       if (!rv->sensitive()) {
+               return false;
+       }
+
+       switch (event->type) {
+       case GDK_BUTTON_PRESS:
+               clicked_regionview = rv;
+               clicked_control_point = 0;
+               clicked_axisview = &rv->get_time_axis_view();
+               clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
+               if (event->button.button == 3) {
+                       return button_press_handler (item, event, StartCrossFadeItem);
+               }
+               break;
+
+       case GDK_BUTTON_RELEASE:
+               if (event->button.button == 3) {
+                       return button_release_handler (item, event, StartCrossFadeItem);
+               }
+               break;
+
+       default:
+               break;
+
+       }
+
+       /* proxy for the regionview */
+
+       return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+}
+
+bool
+Editor::canvas_end_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
+{
+       if (!rv->sensitive()) {
+               return false;
+       }
+
+       switch (event->type) {
+       case GDK_BUTTON_PRESS:
+               clicked_regionview = rv;
+               clicked_control_point = 0;
+               clicked_axisview = &rv->get_time_axis_view();
+               clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
+               if (event->button.button == 3) {
+                       return button_press_handler (item, event, EndCrossFadeItem);
+               }
+               break;
+
+       case GDK_BUTTON_RELEASE:
+               if (event->button.button == 3) {
+                       return button_release_handler (item, event, EndCrossFadeItem);
+               }
+               break;
+
+       default:
+               break;
+
+       }
+
+       /* proxy for the regionview */
+
+       return canvas_region_view_event (event, rv->get_canvas_group(), rv);
+}
+
 bool
 Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv)
 {