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 {
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) {
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.
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
/** "Drag" to cut a region (action only on button release) */
class RegionCutDrag : public Drag
{
- public:
+public:
RegionCutDrag (Editor*, ArdourCanvas::Item*, framepos_t);
~RegionCutDrag ();
void finished (GdkEvent*, bool);
void aborted (bool);
- private:
+private:
EditorCursor* line;
};
/** Drags to move MIDI notes */
class NoteDrag : public Drag
{
- public:
+public:
NoteDrag (Editor*, ArdourCanvas::Item*);
void start_grab (GdkEvent *, Gdk::Cursor* c = 0);
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;
MidiRegionView* _region_view;
framepos_t _last_pos;
- double _last_y;
+ double _y;
};
bool _movable;
ARDOUR::Tempo _grab_bpm;
double _grab_qn;
- XMLNode* before_state;
+ XMLNode* _before_state;
};
/** BBT Ruler drag */
private:
double _grab_qn;
ARDOUR::TempoSection* _tempo;
- XMLNode* before_state;
+ XMLNode* _before_state;
+ bool _drag_valid;
};
/** tempo curve twist drag */
ARDOUR::TempoSection* _tempo;
ARDOUR::TempoSection* _next_tempo;
bool _drag_valid;
- XMLNode* before_state;
+ XMLNode* _before_state;
};
private:
double _grab_qn;
ARDOUR::TempoSection* _tempo;
- XMLNode* before_state;
+ XMLNode* _before_state;
+ bool _drag_valid;
};
/** Drag of the playhead cursor */
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 */
class MarkerDrag : public Drag
{
public:
- MarkerDrag (Editor *, ArdourCanvas::Item *);
+ MarkerDrag (Editor *, ArdourCanvas::Item *);
~MarkerDrag ();
void start_grab (GdkEvent *, Gdk::Cursor* c = 0);
ArdourMarker* _marker; ///< marker being dragged
bool _selection_changed;
- struct CopiedLocationMarkerInfo {
- ARDOUR::Location* location;
- std::vector<ArdourMarker*> markers;
- bool move_both;
- CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m);
+ struct CopiedLocationMarkerInfo {
+ ARDOUR::Location* location;
+ std::vector<ArdourMarker*> markers;
+ bool move_both;
+ CopiedLocationMarkerInfo (ARDOUR::Location* l, ArdourMarker* m);
};
- typedef std::list<CopiedLocationMarkerInfo> CopiedLocationInfo;
- CopiedLocationInfo _copied_locations;
- ArdourCanvas::Points _points;
+ typedef std::list<CopiedLocationMarkerInfo> CopiedLocationInfo;
+ CopiedLocationInfo _copied_locations;
+ ArdourCanvas::Points _points;
};
/** Control point drag */
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;
};
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 */
std::list<ControlPoint*> points; ///< points to drag on the line
std::pair<ARDOUR::framepos_t, ARDOUR::framepos_t> 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<Line> _lines;
*/
class CrossfadeEdgeDrag : public Drag
{
- public:
+public:
CrossfadeEdgeDrag (Editor*, AudioRegionView*, ArdourCanvas::Item*, bool start);
void start_grab (GdkEvent*, Gdk::Cursor* c = 0);
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_ */