Merge branch 'ripple-mode-cc' into cairocanvas
[ardour.git] / gtk2_ardour / editor_drag.h
index 48e08d572079b85f50bf09bf24e9075176b92ad6..d9eda5685a0b4f5ef95e296dad1aa645d6d93582 100644 (file)
@@ -54,7 +54,6 @@ public:
        ~DragManager ();
 
        bool motion_handler (GdkEvent *, bool);
-       bool window_motion_handler (GdkEvent *, bool);
 
        void abort ();
        void add (Drag *);
@@ -103,7 +102,7 @@ private:
 class Drag
 {
 public:
-        Drag (Editor *, ArdourCanvas::Item *);
+        Drag (Editor *, ArdourCanvas::Item *, bool trackview_only = true);
        virtual ~Drag () {}
 
        void set_manager (DragManager* m) {
@@ -212,6 +211,8 @@ protected:
                return _last_pointer_frame;
        }
 
+       double current_pointer_y () const;
+
        boost::shared_ptr<ARDOUR::Region> add_midi_region (MidiTimeAxisView*);
 
        void show_verbose_cursor_time (framepos_t);
@@ -228,11 +229,11 @@ protected:
        bool _was_rolling; ///< true if the session was rolling before the drag started, otherwise false
 
 private:
-
+       bool _trackview_only; ///< true if pointer y value should always be relative to the top of the trackview group
        bool _move_threshold_passed; ///< true if the move threshold has been passed, otherwise false
         bool _was_double_click; ///< true if drag initiated by a double click event
        double _grab_x; ///< trackview x of the grab start position
-       double _grab_y; ///< trackview y of the grab start position
+       double _grab_y; ///< y of the grab start position, possibly adjusted if _trackview_only is true
        double _last_pointer_x; ///< trackview x of the pointer last time a motion occurred
        double _last_pointer_y; ///< trackview y of the pointer last time a motion occurred
        ARDOUR::framepos_t _raw_grab_frame; ///< unsnapped frame that the mouse was at when start_grab was called, or 0
@@ -246,7 +247,7 @@ class RegionDrag;
 class DraggingView
 {
 public:
-       DraggingView (RegionView *, RegionDrag *);
+       DraggingView (RegionView *, RegionDrag *, TimeAxisView* original_tav);
 
        RegionView* view; ///< the view
        /** index into RegionDrag::_time_axis_views of the view that this region is currently being displayed on,
@@ -261,7 +262,9 @@ public:
        double initial_y; ///< the initial y position of the view before any reparenting
        framepos_t initial_position; ///< initial position of the region
        framepos_t initial_end; ///< initial end position of the region
+       framepos_t anchored_fade_length; ///< fade_length when anchored during drag
        boost::shared_ptr<ARDOUR::Playlist> initial_playlist;
+       TimeAxisView* initial_time_axis_view;
 };
 
 /** Abstract base class for drags that involve region(s) */
@@ -379,6 +382,7 @@ private:
 
 
        void collect_new_region_view (RegionView *);
+       RouteTimeAxisView* create_destination_time_axis (boost::shared_ptr<ARDOUR::Region>, TimeAxisView* original);
 
        bool _copy;
        RegionView* _new_region_view;