From 973d58e8f9f6bbf79ee7eee5647d4dcc4a3ae602 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 17 Jun 2017 22:53:58 +0200 Subject: [PATCH] Add option add automation-lane points on the line -- #7397 --- gtk2_ardour/automation_time_axis.cc | 27 +++++++++++++++------------ gtk2_ardour/rc_option_editor.cc | 10 ++++++++++ gtk2_ardour/ui_config_vars.h | 1 + 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index f575cb2a45..b2902633ae 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -625,21 +625,24 @@ AutomationTimeAxisView::add_automation_event (GdkEvent* event, framepos_t frame, return; } - double x = 0; - - _line->grab_item().canvas_to_item (x, y); - - /* compute vertical fractional position */ - - y = 1.0 - (y / _line->height()); - - /* map using line */ - - _line->view_to_model_coord (x, y); - MusicFrame when (frame, 0); _editor.snap_to_with_modifier (when, event); + if (UIConfiguration::instance().get_new_automation_points_on_lane()) { + if (_control->list()->size () == 0) { + y = _control->get_value (); + } else { + y = _control->list()->eval (when.frame); + } + } else { + double x = 0; + _line->grab_item().canvas_to_item (x, y); + /* compute vertical fractional position */ + y = 1.0 - (y / _line->height()); + /* map using line */ + _line->view_to_model_coord (x, y); + } + XMLNode& before = list->get_state(); std::list results; diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 5a4580f5d4..6af8887bd2 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2394,6 +2394,16 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_automation_follows_regions) )); + bo = new BoolOption ( + "new-automation-points-on-lane", + _("Ignore Y-axis click position when adding new automation-points"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_new_automation_points_on_lane), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_new_automation_points_on_lane) + ); + add_option (_("Editor"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled The new points drawn in any automation lane will be placed on the existing line, regardless of mouse y-axis position.")); + ComboOption* fadeshape = new ComboOption ( "default-fade-shape", _("Default fade shape"), diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index 19147c305a..bbefc91b01 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -32,6 +32,7 @@ UI_CONFIG_VARIABLE (bool, color_regions_using_track_color, "color-regions-using- UI_CONFIG_VARIABLE (bool, show_waveform_clipping, "show-waveform-clipping", true) UI_CONFIG_VARIABLE (uint32_t, lock_gui_after_seconds, "lock-gui-after-seconds", 0) UI_CONFIG_VARIABLE (bool, draggable_playhead, "draggable-playhead", true) +UI_CONFIG_VARIABLE (bool, new_automation_points_on_lane, "new-automation-points-on-lane", false) UI_CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi") UI_CONFIG_VARIABLE (std::string, keyboard_layout_name, "keyboard-layout-name", "ansi") UI_CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")