Relative Snap -make it activated by the tertiary modifier during drag.
[ardour.git] / gtk2_ardour / editor_drag.h
index ccfd58c7143a30593b574f182c85d9ea61c4f564..67b549bac29217e16b469b2321320e3c3474b613 100644 (file)
@@ -213,13 +213,18 @@ protected:
                return _last_pointer_y;
        }
 
-       double last_pointer_frame () const {
+       ARDOUR::framepos_t last_pointer_frame () const {
                return _last_pointer_frame;
        }
 
+       ARDOUR::frameoffset_t snap_delta (GdkEvent const *) const;
+
        double current_pointer_x () const;
        double current_pointer_y () const;
 
+       /* sets snap delta from unsnapped pos */
+       void setup_snap_delta (framepos_t pos);
+
        boost::shared_ptr<ARDOUR::Region> add_midi_region (MidiTimeAxisView*);
 
        void show_verbose_cursor_time (framepos_t);
@@ -248,6 +253,11 @@ private:
        ARDOUR::framepos_t _raw_grab_frame; ///< unsnapped frame that the mouse was at when start_grab was called, or 0
        ARDOUR::framepos_t _grab_frame; ///< adjusted_frame that the mouse was at when start_grab was called, or 0
        ARDOUR::framepos_t _last_pointer_frame; ///< adjusted_frame the last time a motion occurred
+
+       /* difference between some key position's snapped and unsnapped
+        *  framepos. used for relative snap.
+        */
+       ARDOUR::frameoffset_t _snap_delta;
        CursorContext::Handle _cursor_ctx; ///< cursor change context
 };
 
@@ -296,6 +306,7 @@ protected:
 
        int _visible_y_low;
        int _visible_y_high;
+       uint32_t _ntracks;
 
        friend class DraggingView;
 
@@ -335,6 +346,11 @@ protected:
        int _last_pointer_time_axis_view;
        double _last_pointer_layer;
        bool _single_axis;
+
+private:
+       uint32_t _ndropzone;
+       uint32_t _pdropzone;
+       uint32_t _ddropzone;
 };
 
 
@@ -497,6 +513,7 @@ private:
        MidiRegionView*     region;
        bool                relative;
        bool                at_front;
+       double              _snap_delta;
 };
 
 /** Drags to move MIDI notes */
@@ -512,7 +529,7 @@ class NoteDrag : public Drag
 
   private:
 
-       ARDOUR::frameoffset_t total_dx () const;
+       ARDOUR::frameoffset_t total_dx (GdkEvent const *) const;
        int8_t total_dy () const;
 
        MidiRegionView* _region;