+ samplepos_t _note[2];
+};
+
+class HitCreateDrag : public Drag
+{
+public:
+ HitCreateDrag (Editor *, ArdourCanvas::Item *, MidiRegionView *);
+ ~HitCreateDrag ();
+
+ void start_grab (GdkEvent *, Gdk::Cursor* c = 0);
+ void motion (GdkEvent *, bool);
+ void finished (GdkEvent *, bool);
+ void aborted (bool);
+
+ bool active (Editing::MouseMode mode) {
+ return mode == Editing::MouseDraw || mode == Editing::MouseContent;
+ }
+
+ bool y_movement_matters () const {
+ return false;
+ }
+
+private:
+ double y_to_region (double) const;
+ ARDOUR::samplecnt_t grid_samples (samplepos_t) const;
+
+ /** @return minimum number of samples (in x) and pixels (in y) that should be considered a movement */
+ virtual std::pair<ARDOUR::samplecnt_t, int> move_threshold () const {
+ return std::make_pair (0, 0);
+ }
+
+ MidiRegionView* _region_view;
+ samplepos_t _last_pos;
+ double _y;
+