+ double compute_x_delta (GdkEvent const *, ARDOUR::framecnt_t *);
+ bool y_movement_allowed (int, ARDOUR::layer_t) const;
+
+ bool _brushing;
+ ARDOUR::framepos_t _last_frame_position; ///< last position of the thing being dragged
+ double _total_x_delta;
+ int _last_pointer_time_axis_view;
+ ARDOUR::layer_t _last_pointer_layer;
+};
+
+
+/** Drags to move (or copy) regions that are already shown in the GUI to
+ * somewhere different.
+ */
+class RegionMoveDrag : public RegionMotionDrag
+{
+public:
+ RegionMoveDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list<RegionView*> const &, bool, bool);
+ virtual ~RegionMoveDrag () {}
+
+ void motion (GdkEvent *, bool);
+ void finished (GdkEvent *, bool);
+ void aborted (bool);
+
+ bool regions_came_from_canvas () const {
+ return true;
+ }
+
+ std::pair<ARDOUR::framecnt_t, int> move_threshold () const {
+ return std::make_pair (4, 4);
+ }