X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_drag.h;h=259dc50778c697a040e6ea8b2c8bdd2b87f4b4f1;hb=05f476875ba5ad01e34b297837d9e3dfb246349c;hp=5c9f09d04e64c106fb73b7c5141db0b0ea9965b1;hpb=6ae4f104371ed433a79c8845de97428d964edd8b;p=ardour.git diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 5c9f09d04e..259dc50778 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -54,6 +54,7 @@ public: ~DragManager (); bool motion_handler (GdkEvent *, bool); + bool window_motion_handler (GdkEvent *, bool); void abort (); void add (Drag *); @@ -62,6 +63,8 @@ public: bool end_grab (GdkEvent *); bool have_item (ArdourCanvas::Item *) const; + void mark_double_click (); + /** @return true if an end drag or abort is in progress */ bool ending () const { return _ending; @@ -71,12 +74,12 @@ public: return !_drags.empty (); } - /** @return current pointer x position in trackview coordinates */ + /** @return current pointer x position in canvas coordinates */ double current_pointer_x () const { return _current_pointer_x; } - /** @return current pointer y position in trackview coordinates */ + /** @return current pointer y position in canvas coordinates */ double current_pointer_y () const { return _current_pointer_y; } @@ -90,8 +93,8 @@ private: Editor* _editor; std::list _drags; bool _ending; ///< true if end_grab or abort is in progress, otherwise false - double _current_pointer_x; ///< trackview x of the current pointer - double _current_pointer_y; ///< trackview y of the current pointer + double _current_pointer_x; ///< canvas-coordinate space x of the current pointer + double _current_pointer_y; ///< canvas-coordinate space y of the current pointer ARDOUR::framepos_t _current_pointer_frame; ///< frame that the pointer is now at bool _old_follow_playhead; ///< state of Editor::follow_playhead() before the drags started }; @@ -100,7 +103,7 @@ private: class Drag { public: - Drag (Editor *, ArdourCanvas::Item *); + Drag (Editor *, ArdourCanvas::Item *); virtual ~Drag () {} void set_manager (DragManager* m) { @@ -119,6 +122,9 @@ public: ARDOUR::framepos_t 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; } + /** Called to start a grab of an item. * @param e Event that caused the grab to start. * @param c Cursor to use, or 0. @@ -224,6 +230,7 @@ protected: private: bool _move_threshold_passed; ///< true if the move threshold has been passed, otherwise false + 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; ///< trackview y of the grab start position double _last_pointer_x; ///< trackview x of the pointer last time a motion occurred @@ -254,6 +261,7 @@ public: double initial_y; ///< the initial y position of the view before any reparenting framepos_t initial_position; ///< initial position of the region framepos_t initial_end; ///< initial end position of the region + framepos_t anchored_fade_length; ///< fade_length when anchored during drag boost::shared_ptr initial_playlist; }; @@ -371,6 +379,7 @@ private: void add_stateful_diff_commands_for_playlists (PlaylistSet const &); void collect_new_region_view (RegionView *); + RouteTimeAxisView* create_destination_time_axis (boost::shared_ptr); bool _copy; RegionView* _new_region_view; @@ -565,6 +574,7 @@ private: Operation _operation; bool _preserve_fade_anchor; + bool _jump_position_when_done; }; /** Meter marker drag */ @@ -626,7 +636,7 @@ private: class CursorDrag : public Drag { public: - CursorDrag (Editor *, ArdourCanvas::Item *, bool); + CursorDrag (Editor *, EditorCursor&, bool); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); @@ -648,6 +658,7 @@ public: private: void fake_locate (framepos_t); + 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 }; @@ -692,7 +703,7 @@ public: class MarkerDrag : public Drag { public: - MarkerDrag (Editor *, ArdourCanvas::Item *); + MarkerDrag (Editor *, ArdourCanvas::Item *); ~MarkerDrag (); void start_grab (GdkEvent *, Gdk::Cursor* c = 0);