X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_drag.h;h=cd1b0c2474446934222a3f5cf9b3b41623fb6276;hb=8509b5fddc538853a80c97dfdb5b425996bf9662;hp=2197f5601e7a7490f17a7378a30f3aa6483f5868;hpb=ae0759ae88c2497c936b052936610a0e8c97a236;p=ardour.git diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 2197f5601e..cd1b0c2474 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -27,14 +27,23 @@ #include "ardour/types.h" +#include "canvas/types.h" + #include "cursor_context.h" #include "editor_items.h" #include "mouse_cursors.h" +#include "editing.h" namespace ARDOUR { class Location; } +namespace ArdourCanvas { + class Item; + class Line; + class Rectangle; +} + namespace PBD { class StatefulDiffCommand; } @@ -46,6 +55,18 @@ class TimeAxisView; class MidiTimeAxisView; class Drag; class NoteBase; +class RegionView; +class TimeAxisView; +class RouteTimeAxisView; +class RegionSelection; +class MidiRegionView; +class MeterMarker; +class ArdourMarker; +class TempoMarker; +class ControlPoint; +class AudioRegionView; +class AutomationLine; +class AutomationTimeAxisView; /** Class to manage current drags */ class DragManager @@ -181,7 +202,7 @@ public: bool initially_vertical() const { return _initially_vertical; } - + /** Set up the _pointer_frame_offset */ virtual void setup_pointer_frame_offset () { _pointer_frame_offset = 0; @@ -217,7 +238,7 @@ protected: return _last_pointer_frame; } - ARDOUR::frameoffset_t snap_delta (GdkEvent const *) const; + ARDOUR::frameoffset_t snap_delta (guint const) const; double current_pointer_x () const; double current_pointer_y () const; @@ -225,7 +246,7 @@ protected: /* sets snap delta from unsnapped pos */ void setup_snap_delta (framepos_t pos); - boost::shared_ptr add_midi_region (MidiTimeAxisView*); + boost::shared_ptr add_midi_region (MidiTimeAxisView*, bool commit); void show_verbose_cursor_time (framepos_t); void show_verbose_cursor_duration (framepos_t, framepos_t, double xoffset = 0); @@ -341,6 +362,7 @@ protected: virtual bool y_movement_allowed (int, double, int skip_invisible = 0) const; bool _brushing; + bool _ignore_video_lock; ARDOUR::framepos_t _last_frame_position; ///< last position of the thing being dragged double _total_x_delta; int _last_pointer_time_axis_view; @@ -456,13 +478,13 @@ protected: private: TimeAxisView *prev_tav; // where regions were most recently dragged from TimeAxisView *orig_tav; // where drag started - framecnt_t prev_amount; - framepos_t prev_position; - framecnt_t selection_length; + ARDOUR::framecnt_t prev_amount; + ARDOUR::framepos_t prev_position; + ARDOUR::framecnt_t selection_length; bool allow_moves_across_tracks; // only if all selected regions are on one track ARDOUR::RegionList *exclude; - void add_all_after_to_views (TimeAxisView *tav, framepos_t where, const RegionSelection &exclude, bool drag_in_progress); - void remove_unselected_from_views (framecnt_t amount, bool move_regions); + void add_all_after_to_views (TimeAxisView *tav, ARDOUR::framepos_t where, const RegionSelection &exclude, bool drag_in_progress); + void remove_unselected_from_views (ARDOUR::framecnt_t amount, bool move_regions); }; @@ -511,6 +533,7 @@ private: MidiRegionView* region; bool relative; bool at_front; + bool _was_selected; double _snap_delta; }; @@ -527,14 +550,14 @@ class NoteDrag : public Drag private: - ARDOUR::frameoffset_t total_dx (GdkEvent const *) const; + ARDOUR::frameoffset_t total_dx (const guint) const; int8_t total_dy () const; MidiRegionView* _region; NoteBase* _primary; double _cumulative_dx; double _cumulative_dy; - bool _was_selected; + bool _was_selected; double _note_height; }; @@ -550,7 +573,7 @@ public: void aborted (bool); bool active (Editing::MouseMode mode) { - return mode == Editing::MouseDraw; + return mode == Editing::MouseDraw || mode == Editing::MouseContent; } bool y_movement_matters () const { @@ -559,8 +582,8 @@ public: private: double y_to_region (double) const; - framecnt_t grid_frames (framepos_t) const; - + ARDOUR::framecnt_t grid_frames (framepos_t) const; + MidiRegionView* _region_view; ArdourCanvas::Rectangle* _drag_rect; framepos_t _note[2]; @@ -624,6 +647,7 @@ protected: private: ARDOUR::frameoffset_t _startdrag_video_offset; ARDOUR::frameoffset_t _max_backwards_drag; + bool _stuck; }; /** Drag to trim region(s) */ @@ -652,7 +676,7 @@ public: private: Operation _operation; - + bool _preserve_fade_anchor; bool _jump_position_when_done; }; @@ -800,13 +824,13 @@ public: private: void update_item (ARDOUR::Location *); - Marker* _marker; ///< marker being dragged - + ArdourMarker* _marker; ///< marker being dragged + bool _selection_changed; struct CopiedLocationMarkerInfo { ARDOUR::Location* location; - std::vector markers; + std::vector markers; bool move_both; - CopiedLocationMarkerInfo (ARDOUR::Location* l, Marker* m); + CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m); }; typedef std::list CopiedLocationInfo; @@ -856,6 +880,8 @@ private: double _fixed_grab_x; double _fixed_grab_y; double _cumulative_y_drag; + uint32_t _before; + uint32_t _after; }; /** Transient feature line drags*/ @@ -907,7 +933,7 @@ public: * @param drag_in_progress true if the drag is currently happening. */ virtual void select_things (int button_state, framepos_t x1, framepos_t x2, double y1, double y2, bool drag_in_progress) = 0; - + virtual void deselect_things () = 0; protected: @@ -1017,7 +1043,7 @@ public: RangeMarkerBarDrag (Editor *, ArdourCanvas::Item *, Operation); ~RangeMarkerBarDrag (); - + void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); void finished (GdkEvent *, bool); @@ -1109,7 +1135,7 @@ class CrossfadeEdgeDrag : public Drag void motion (GdkEvent*, bool); void finished (GdkEvent*, bool); void aborted (bool); - + bool y_movement_matters () const { return false; }