13
0

skeleton for crossfade edge dragging

git-svn-id: svn://localhost/ardour2/branches/3.0@12235 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-05-09 23:04:18 +00:00
parent d8e41bde96
commit 25655e1a6d
4 changed files with 69 additions and 6 deletions

View File

@ -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

View File

@ -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)
{
}

View File

@ -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_ */

View File

@ -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)) {