export: add support for CAF
[ardour.git] / gtk2_ardour / editor_canvas_events.cc
index 7cd25ca92c8098764e05340f483ca66d9794d943..79cc1e066fcacbc0b8f5c87a5a6ca6d71e6ca89a 100644 (file)
@@ -66,17 +66,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
   retry:
        switch (direction) {
        case GDK_SCROLL_UP:
-               if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) {
                        //for mouse-wheel zoom, force zoom-focus to mouse
                        Editing::ZoomFocus temp_focus = zoom_focus;
                        zoom_focus = Editing::ZoomFocusMouse;
                        temporal_zoom_step (false);
                        zoom_focus = temp_focus;
                        return true;
-               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
+               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
                        direction = GDK_SCROLL_LEFT;
                        goto retry;
-               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
+               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) {
                        if (!current_stepping_trackview) {
                                step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500);
                                std::pair<TimeAxisView*, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize);
@@ -95,17 +95,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
                break;
 
        case GDK_SCROLL_DOWN:
-               if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
+               if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) {
                        //for mouse-wheel zoom, force zoom-focus to mouse
                        Editing::ZoomFocus temp_focus = zoom_focus;
                        zoom_focus = Editing::ZoomFocusMouse;
                        temporal_zoom_step (true);
                        zoom_focus = temp_focus;
                        return true;
-               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
+               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
                        direction = GDK_SCROLL_RIGHT;
                        goto retry;
-               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
+               } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) {
                        if (!current_stepping_trackview) {
                                step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500);
                                std::pair<TimeAxisView*, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize);
@@ -948,13 +948,11 @@ Editor::canvas_cd_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
        return typed_event (item, event, CdMarkerBarItem);
 }
 
-#ifdef WITH_VIDEOTIMELINE
 bool
 Editor::canvas_videotl_bar_event (GdkEvent *event, ArdourCanvas::Item* item)
 {
        return typed_event (item, event, VideoBarItem);
 }
-#endif
 
 bool
 Editor::canvas_tempo_marker_event (GdkEvent *event, ArdourCanvas::Item* item, TempoMarker* /*marker*/)
@@ -1031,46 +1029,59 @@ Editor::track_canvas_drag_motion (Glib::RefPtr<Gdk::DragContext> const& context,
        (void) event_frame (&event, &px, &py);
 
        std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py);
-
+       bool can_drop = false;
+       
        if (tv.first != 0) {
 
+               /* over a time axis view of some kind */
+
                rtav = dynamic_cast<RouteTimeAxisView*> (tv.first);
                
                if (rtav != 0 && rtav->is_track ()) {
-
-                       region = _regions->get_dragged_region ();
+                       /* over a track, not a bus */
+                       can_drop = true;
+               }
                        
-                       if (region) {
-       
-                               if ((boost::dynamic_pointer_cast<AudioRegion> (region) != 0 &&
-                                   dynamic_cast<AudioTimeAxisView*> (tv.first) != 0) ||
-                                   (boost::dynamic_pointer_cast<MidiRegion> (region) != 0 &&
-                                    dynamic_cast<MidiTimeAxisView*> (tv.first) != 0)) {
 
-                                       /* audio to audio 
-                                          OR 
-                                          midi to midi
-                                       */
+       } else {
+               /* not over a time axis view, so drop is possible */
+               can_drop = true;
+       }
 
-                                       context->drag_status (context->get_suggested_action(), time);
-                                       return true;
-                               }
+       if (can_drop) {
+               region = _regions->get_dragged_region ();
+               
+               if (region) {
+                       
+                       if ((boost::dynamic_pointer_cast<AudioRegion> (region) != 0 &&
+                            dynamic_cast<AudioTimeAxisView*> (tv.first) != 0) ||
+                           (boost::dynamic_pointer_cast<MidiRegion> (region) != 0 &&
+                            dynamic_cast<MidiTimeAxisView*> (tv.first) != 0)) {
+                               
+                               /* audio to audio 
+                                  OR 
+                                  midi to midi
+                               */
+                               
+                               context->drag_status (context->get_suggested_action(), time);
+                               return true;
+                       }
+               } else {
+                       /* DND originating from outside ardour
+                        *
+                        * TODO: check if file is audio/midi, allow drops on same track-type only,
+                        * currently: if audio is dropped on a midi-track, it is only added to the region-list
+                        */
+                       if (Profile->get_sae() || Config->get_only_copy_imported_files()) {
+                               context->drag_status(Gdk::ACTION_COPY, time);
                        } else {
-                               /* DND originating from outside ardour
-                                *
-                                * TODO: check if file is audio/midi, allow drops on same track-type only,
-                                * currently: if audio is dropped on a midi-track, it is only added to the region-list
-                                */
-                               if (Profile->get_sae() || Config->get_only_copy_imported_files()) {
+                               if ((context->get_actions() & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY) {
                                        context->drag_status(Gdk::ACTION_COPY, time);
                                } else {
-                                       if ((context->get_actions() & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY)
-                                               context->drag_status(Gdk::ACTION_COPY, time);
-                                       else
-                                               context->drag_status(Gdk::ACTION_LINK, time);
+                                       context->drag_status(Gdk::ACTION_LINK, time);
                                }
-                               return true;
                        }
+                       return true;
                }
        }