X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_drag.h;h=bc30486b584094774f1d0c4c3a28416b07f958d3;hb=47d186d1a301c8cbc8ed8c3b6cbe0c84bb6b681f;hp=a3e17bfaf916cdcfad781cbd3ae7033e2d9935ee;hpb=4eba9b86381b7a56d0b1c20cde2064fd16c45a04;p=ardour.git diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index a3e17bfaf9..bc30486b58 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -327,6 +327,7 @@ protected: std::vector _time_axis_views; int find_time_axis_view (TimeAxisView *) const; int apply_track_delta (const int start, const int delta, const int skip, const bool distance_only = false) const; + int32_t current_music_divisor (framepos_t pos, int32_t button_state); int _visible_y_low; int _visible_y_high; @@ -590,11 +591,47 @@ private: double y_to_region (double) const; ARDOUR::framecnt_t grid_frames (framepos_t) const; + /** @return minimum number of frames (in x) and pixels (in y) that should be considered a movement */ + virtual std::pair move_threshold () const { + return std::make_pair (0, 0); + } + MidiRegionView* _region_view; ArdourCanvas::Rectangle* _drag_rect; framepos_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::framecnt_t grid_frames (framepos_t) const; + + /** @return minimum number of frames (in x) and pixels (in y) that should be considered a movement */ + virtual std::pair move_threshold () const { + return std::make_pair (0, 0); + } + + MidiRegionView* _region_view; +}; + /** Drag to move MIDI patch changes */ class PatchChangeDrag : public Drag { @@ -745,6 +782,7 @@ private: bool _copy; bool _movable; + double _grab_bpm; XMLNode* before_state; }; @@ -770,7 +808,7 @@ public: void setup_pointer_frame_offset (); private: - double _pulse; + double _grab_qn; ARDOUR::TempoSection* _tempo; XMLNode* before_state; }; @@ -1188,5 +1226,21 @@ class CrossfadeEdgeDrag : public Drag bool start; }; +class RulerZoomDrag : public Drag +{ +public: + RulerZoomDrag (Editor*, ArdourCanvas::Item*); + + void start_grab (GdkEvent*, Gdk::Cursor* c = 0); + void motion (GdkEvent *, bool); + void finished (GdkEvent*, bool); + void aborted (bool); + + virtual bool allow_vertical_autoscroll () const { + return false; + } + +}; + #endif /* __gtk2_ardour_editor_drag_h_ */