summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-11-13 16:28:20 +0000
committerCarl Hetherington <carl@carlh.net>2011-11-13 16:28:20 +0000
commit28123e436dd138000bbbe2814c19d3b3bb53d76d (patch)
tree4ef474b8c0ea4f317d7edfdd2d7c4852c8098271
parentef4ac379a330a6a26e4b2da575a2c0010bc41783 (diff)
Snap new automation points on audio lanes (part of #4297).
git-svn-id: svn://localhost/ardour2/branches/3.0@10570 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/automation_time_axis.cc4
-rw-r--r--gtk2_ardour/automation_time_axis.h2
-rw-r--r--gtk2_ardour/editor_mouse.cc4
-rw-r--r--gtk2_ardour/public_editor.h2
4 files changed, 8 insertions, 4 deletions
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<AutomationList> 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<AutomationTimeAxisView*>(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<AutomationTimeAxisView*>(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;