summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-05-22 00:56:39 +0000
committerCarl Hetherington <carl@carlh.net>2010-05-22 00:56:39 +0000
commit8d048aa4722a9d28e02cef68a5c26c1962c63c94 (patch)
treec3849e31bd29f971c3f32b63e1e8e6841543fc5a /gtk2_ardour
parent22a2c820452eeec0399039149c179c4b0f7dcc21 (diff)
Fix, or at least improve, automation line drawing behaviour with MIDI regions.
git-svn-id: svn://localhost/ardour2/branches/3.0@7137 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/automation_region_view.cc28
1 files changed, 17 insertions, 11 deletions
diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc
index 08376d823f..45bd5d770b 100644
--- a/gtk2_ardour/automation_region_view.cc
+++ b/gtk2_ardour/automation_region_view.cc
@@ -85,16 +85,24 @@ bool
AutomationRegionView::canvas_event(GdkEvent* ev)
{
if (ev->type == GDK_BUTTON_RELEASE) {
- const nframes_t when = trackview.editor().pixel_to_frame((nframes_t)ev->button.x)
- - _region->position();
- add_automation_event(ev, when, ev->button.y);
+
+ double x = ev->button.x;
+ double y = ev->button.y;
+
+ /* convert to item coordinates in the time axis view */
+ automation_view()->canvas_display()->w2i (x, y);
+
+ add_automation_event (ev, trackview.editor().pixel_to_frame (x) - _region->position(), y);
}
return false;
}
+/** @param when Position in frames, where 0 is the start of the region.
+ * @param y y position, relative to our TimeAxisView.
+ */
void
-AutomationRegionView::add_automation_event (GdkEvent* /*event*/, nframes_t when, double y)
+AutomationRegionView::add_automation_event (GdkEvent *, nframes_t when, double y)
{
if (!_line) {
boost::shared_ptr<Evoral::Control> c = _region->control(_parameter, true);
@@ -105,11 +113,8 @@ AutomationRegionView::add_automation_event (GdkEvent* /*event*/, nframes_t when,
}
assert(_line);
- double x = when;
- AutomationTimeAxisView* const view = automation_view();
-
- view->canvas_display()->w2i (x, y);
-
+ AutomationTimeAxisView* const view = automation_view ();
+
/* compute vertical fractional position */
const double h = trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2;
@@ -117,12 +122,13 @@ AutomationRegionView::add_automation_event (GdkEvent* /*event*/, nframes_t when,
/* map using line */
- _line->view_to_model_coord (x, y);
+ double when_d = when;
+ _line->view_to_model_coord (when_d, y);
view->session()->begin_reversible_command (_("add automation event"));
XMLNode& before = _line->the_list()->get_state();
- _line->the_list()->add (x, y);
+ _line->the_list()->add (when_d, y);
XMLNode& after = _line->the_list()->get_state();
view->session()->commit_reversible_command (new MementoCommand<ARDOUR::AutomationList>(