further adventures in drag-refactoring do that LineDrag can be used in MidiCueEditor also

This commit is contained in:
Paul Davis 2024-10-09 12:49:48 -06:00
parent 302337e8fd
commit 01068fe306
7 changed files with 46 additions and 27 deletions

View file

@ -848,7 +848,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
return true;
case GainLineItem:
_drags->set (new LineDrag (*this, item), event);
_drags->set (new LineDrag (*this, item, [&](GdkEvent* ev,timepos_t const & pos, double y) { line_drag_click (ev, pos, y); }), event);
return true;
break;
@ -858,7 +858,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
break;
case EditorAutomationLineItem:
_drags->set (new LineDrag (*this, item), event);
_drags->set (new LineDrag (*this, item, [&](GdkEvent* ev,timepos_t const & pos, double y) { line_drag_click (ev, pos, y); }), event);
return true;
break;
@ -999,7 +999,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
break;
case EditorAutomationLineItem:
_drags->set (new LineDrag (*this, item), event);
_drags->set (new LineDrag (*this, item, [&](GdkEvent* ev,timepos_t const & pos, double y) { line_drag_click (ev, pos, y); }), event);
return true;
break;
@ -1062,7 +1062,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
case MouseDraw:
switch (item_type) {
case GainLineItem:
_drags->set (new LineDrag (*this, item), event);
_drags->set (new LineDrag (*this, item, [&](GdkEvent* ev,timepos_t const & pos, double y) { line_drag_click (ev, pos, y); }), event);
return true;
case ControlPointItem:
@ -2617,3 +2617,22 @@ Editor::rb_click (GdkEvent* event, timepos_t const & where)
return do_deselect;
}
void
Editor::line_drag_click (GdkEvent* event, timepos_t const & where, double y)
{
AutomationTimeAxisView* atv;
if ((atv = dynamic_cast<AutomationTimeAxisView*> (clicked_axisview)) != 0) {
atv->add_automation_event (event, where, y, false);
} else if (dynamic_cast<AudioTimeAxisView*> (clicked_axisview) != 0) {
AudioRegionView* arv;
if ((arv = dynamic_cast<AudioRegionView*> (clicked_regionview)) != 0) {
arv->add_gain_point_event (&arv->fx_line ()->grab_item (), event, false);
}
}
}