diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index 4ba09120ad..7b44bac1d8 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -558,7 +558,7 @@ AutomationTimeAxisView::build_display_menu () } void -AutomationTimeAxisView::add_automation_event (ArdourCanvas::Item* /*item*/, GdkEvent* /*event*/, framepos_t when, double y) +AutomationTimeAxisView::add_automation_event (GdkEvent* event, framepos_t when, double y) { if (!_line) { return; @@ -578,6 +578,8 @@ AutomationTimeAxisView::add_automation_event (ArdourCanvas::Item* /*item*/, GdkE boost::shared_ptr list = _line->the_list (); + _editor.snap_to_with_modifier (when, event); + _session->begin_reversible_command (_("add automation event")); XMLNode& before = list->get_state(); diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h index a48b1f9b2a..7706ed7ee3 100644 --- a/gtk2_ardour/automation_time_axis.h +++ b/gtk2_ardour/automation_time_axis.h @@ -72,7 +72,7 @@ class AutomationTimeAxisView : public TimeAxisView { void set_samples_per_unit (double); std::string name() const { return _name; } - void add_automation_event (ArdourCanvas::Item *item, GdkEvent *event, framepos_t, double); + void add_automation_event (GdkEvent *, framepos_t, double); void clear_lines (); diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 6419591716..e039983a67 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1474,7 +1474,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT case AutomationTrackItem: atv = dynamic_cast(clicked_axisview); if (atv) { - atv->add_automation_event (item, event, where, event->button.y); + atv->add_automation_event (event, where, event->button.y); } return true; break; @@ -1502,7 +1502,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT case AutomationTrackItem: dynamic_cast(clicked_axisview)-> - add_automation_event (item, event, where, event->button.y); + add_automation_event (event, where, event->button.y); return true; break; default: diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index f5d7dad522..d42605eb1b 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -387,6 +387,8 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual ARDOUR::Location* find_location_from_marker (Marker *, bool &) const = 0; virtual Marker* find_marker_from_location_id (PBD::ID const &, bool) const = 0; + virtual void snap_to_with_modifier (framepos_t &, GdkEvent const *, int32_t direction = 0, bool for_mark = false) = 0; + /// Singleton instance, set up by Editor::Editor() static PublicEditor* _instance;