diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-09 23:04:18 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-09 23:04:18 +0000 |
commit | 25655e1a6dae74a10707ebc8faa7b2bd0ab16210 (patch) | |
tree | 29f013883fe66f05662d3863c42a4bc789abe4a4 /gtk2_ardour | |
parent | d8e41bde96cf31a80910a4e9fd0ac9f225dfce49 (diff) |
skeleton for crossfade edge dragging
git-svn-id: svn://localhost/ardour2/branches/3.0@12235 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 37 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.h | 22 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 8 |
4 files changed, 69 insertions, 6 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index a123ea1e9c..77bc5ec27b 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -377,9 +377,7 @@ Editor::canvas_start_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, Aud } - /* proxy for the regionview */ - - return canvas_region_view_event (event, rv->get_canvas_group(), rv); + return typed_event (item, event, StartCrossFadeItem); } bool @@ -411,9 +409,7 @@ Editor::canvas_end_xfade_event (GdkEvent *event, ArdourCanvas::Item* item, Audio } - /* proxy for the regionview */ - - return canvas_region_view_event (event, rv->get_canvas_group(), rv); + return typed_event (item, event, EndCrossFadeItem); } bool diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 66bb09980f..2489114982 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -4551,3 +4551,40 @@ NoteCreateDrag::aborted (bool) { } + +/*------------*/ + +CrossfadeEdgeDrag::CrossfadeEdgeDrag (Editor* e, AudioRegionView* rv, ArdourCanvas::Item* i, bool start_yn) + : Drag (e, i) + , arv (rv) + , start (start_yn) +{ + cerr << "new xfade drag\n"; +} + +CrossfadeEdgeDrag::~CrossfadeEdgeDrag () +{ + cerr << "destory xfade drag\n"; +} + +void +CrossfadeEdgeDrag::start_grab (GdkEvent* event, Gdk::Cursor *cursor) +{ + Drag::start_grab (event, cursor); +} + +void +CrossfadeEdgeDrag::motion (GdkEvent*, bool) +{ +} + +void +CrossfadeEdgeDrag::finished (GdkEvent*, bool) +{ +} + +void +CrossfadeEdgeDrag::aborted (bool) +{ +} + diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 0d457a39d9..3c33e4de48 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -972,5 +972,27 @@ private: bool _nothing_to_drag; }; +/** Drag of one edge of an xfade + */ +class CrossfadeEdgeDrag : public Drag +{ + public: + CrossfadeEdgeDrag (Editor*, AudioRegionView*, ArdourCanvas::Item*, bool start); + ~CrossfadeEdgeDrag (); + + void start_grab (GdkEvent*, Gdk::Cursor* c = 0); + void motion (GdkEvent*, bool); + void finished (GdkEvent*, bool); + void aborted (bool); + + bool x_movement_matters () const { + return false; + } + + private: + AudioRegionView* arv; + bool start; +}; + #endif /* __gtk2_ardour_editor_drag_h_ */ diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 351ed82e64..a36e4a5df6 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -935,6 +935,14 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT return true; } + case StartCrossFadeItem: + _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, true), event, 0); + break; + + case EndCrossFadeItem: + _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, true), event, 0); + break; + case FeatureLineItem: { if (Keyboard::modifier_state_contains (event->button.state, Keyboard::TertiaryModifier)) { |