X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_drag.h;h=df54c6bda7f57b39e5232fa5f7ee8dd589e23a3d;hb=4ff6ed0f2287b66e0e15b89d26d1c013dc98eae0;hp=84356f46368ccaa9191bc719c10931702cf5be6b;hpb=5c741b7a07d12780ba135bcd8509e7ab420cd7da;p=ardour.git diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 84356f4636..df54c6bda7 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -88,7 +88,7 @@ public: bool end_grab (GdkEvent *); bool have_item (ArdourCanvas::Item *) const; - void mark_double_click (); + void mark_double_click (); /** @return true if an end drag or abort is in progress */ bool ending () const { @@ -128,7 +128,7 @@ private: class Drag { public: - Drag (Editor *, ArdourCanvas::Item *, bool trackview_only = true); + Drag (Editor *, ArdourCanvas::Item *, bool trackview_only = true); virtual ~Drag () {} void set_manager (DragManager* m) { @@ -147,8 +147,8 @@ public: ARDOUR::MusicFrame adjusted_frame (ARDOUR::framepos_t, GdkEvent const *, bool snap = true) const; ARDOUR::framepos_t adjusted_current_frame (GdkEvent const *, bool snap = true) const; - bool was_double_click() const { return _was_double_click; } - void set_double_click (bool yn) { _was_double_click = yn; } + bool was_double_click() const { return _was_double_click; } + void set_double_click (bool yn) { _was_double_click = yn; } /** Called to start a grab of an item. * @param e Event that caused the grab to start. @@ -270,7 +270,7 @@ private: bool _move_threshold_passed; ///< true if the move threshold has been passed, otherwise false bool _starting_point_passed; ///< true if we called move () with first_move flag, otherwise false bool _initially_vertical; ///< true if after move threshold is passed we appear to be moving vertically; undefined before that - bool _was_double_click; ///< true if drag initiated by a double click event + 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; ///< 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 @@ -501,7 +501,7 @@ private: /** "Drag" to cut a region (action only on button release) */ class RegionCutDrag : public Drag { - public: +public: RegionCutDrag (Editor*, ArdourCanvas::Item*, framepos_t); ~RegionCutDrag (); @@ -510,7 +510,7 @@ class RegionCutDrag : public Drag void finished (GdkEvent*, bool); void aborted (bool); - private: +private: EditorCursor* line; }; @@ -551,7 +551,7 @@ private: /** Drags to move MIDI notes */ class NoteDrag : public Drag { - public: +public: NoteDrag (Editor*, ArdourCanvas::Item*); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); @@ -560,7 +560,7 @@ class NoteDrag : public Drag void aborted (bool); void setup_pointer_frame_offset (); - private: +private: double total_dx (GdkEvent * event) const; // total movement in quarter notes int8_t total_dy () const; @@ -822,6 +822,7 @@ private: double _grab_qn; ARDOUR::TempoSection* _tempo; XMLNode* _before_state; + bool _drag_valid; }; /** tempo curve twist drag */ @@ -880,6 +881,7 @@ private: double _grab_qn; ARDOUR::TempoSection* _tempo; XMLNode* _before_state; + bool _drag_valid; }; /** Drag of the playhead cursor */ @@ -904,9 +906,15 @@ public: private: void fake_locate (framepos_t); - EditorCursor& _cursor; + EditorCursor& _cursor; bool _stop; ///< true to stop the transport on starting the drag, otherwise false double _grab_zoom; ///< editor frames per unit when our grab started + + //used for zooming + int _last_mx; + int _last_my; + int _last_dx; + int _last_y_delta; }; /** Region fade-in drag */ @@ -949,7 +957,7 @@ public: class MarkerDrag : public Drag { public: - MarkerDrag (Editor *, ArdourCanvas::Item *); + MarkerDrag (Editor *, ArdourCanvas::Item *); ~MarkerDrag (); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); @@ -972,16 +980,16 @@ private: ArdourMarker* _marker; ///< marker being dragged bool _selection_changed; - struct CopiedLocationMarkerInfo { - ARDOUR::Location* location; - std::vector markers; - bool move_both; - CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m); + struct CopiedLocationMarkerInfo { + ARDOUR::Location* location; + std::vector markers; + bool move_both; + CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m); }; - typedef std::list CopiedLocationInfo; - CopiedLocationInfo _copied_locations; - ArdourCanvas::Points _points; + typedef std::list CopiedLocationInfo; + CopiedLocationInfo _copied_locations; + ArdourCanvas::Points _points; }; /** Control point drag */ @@ -1004,7 +1012,7 @@ private: double _fixed_grab_y; double _cumulative_x_drag; double _cumulative_y_drag; - bool _pushing; + bool _pushing; uint32_t _final_index; static double _zero_gain_fraction; }; @@ -1172,8 +1180,8 @@ private: bool _add; TrackSelection _track_selection_at_start; bool _time_selection_at_start; - framepos_t start_at_start; - framepos_t end_at_start; + framepos_t start_at_start; + framepos_t end_at_start; }; /** Range marker drag */ @@ -1261,7 +1269,7 @@ private: std::list points; ///< points to drag on the line std::pair range; ///< the range of all points on the line, in session frames XMLNode* state; ///< the XML state node before the drag - double original_fraction; ///< initial y-fraction before the drag + double original_fraction; ///< initial y-fraction before the drag }; std::list _lines; @@ -1274,7 +1282,7 @@ private: */ class CrossfadeEdgeDrag : public Drag { - public: +public: CrossfadeEdgeDrag (Editor*, AudioRegionView*, ArdourCanvas::Item*, bool start); void start_grab (GdkEvent*, Gdk::Cursor* c = 0); @@ -1290,26 +1298,10 @@ class CrossfadeEdgeDrag : public Drag return std::make_pair (4, 4); } - private: +private: AudioRegionView* arv; 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_ */