diff --git a/gtk2_ardour/audio_trigger_properties_box.cc b/gtk2_ardour/audio_trigger_properties_box.cc index 83fdd4687b..5b56f4ecd6 100644 --- a/gtk2_ardour/audio_trigger_properties_box.cc +++ b/gtk2_ardour/audio_trigger_properties_box.cc @@ -128,7 +128,7 @@ AudioTriggerPropertiesBox::AudioTriggerPropertiesBox () _table.set_spacings (4); _table.set_border_width (2); - attach (*eTempoBox, 0,1, 0,1, Gtk::FILL, Gtk::SHRINK); + attach (*eTempoBox, 0,1, 0,1, Gtk::FILL, Gtk::EXPAND | Gtk::FILL); #if 0 attach (_table, 0,1, 1,2, Gtk::FILL, Gtk::SHRINK); #endif diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 7b5b236c47..a9e266b66e 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -963,6 +963,13 @@ Editor::add_sources (vector paths, } } +#ifdef MIXBUS + if (mode == ImportAsTrigger) { + /* Mixbus will only ever use stereo tracks when using DnD to import to triggers */ + input_chan = 2; + } +#endif + if (Config->get_output_auto_connect() & AutoConnectMaster) { output_chan = (_session->master_out() ? _session->master_out()->n_inputs().n_audio() : input_chan); } else { diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index c67798fa1f..c60dc3db4a 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -5704,7 +5704,7 @@ SelectionDrag::motion (GdkEvent* event, bool first_move) } if (first_move) { - if (Config->get_edit_mode() == RippleAll) { + if (Config->get_edit_mode() == RippleAll && !Config->get_interview_editing()) { _editor->selection->set (_editor->get_track_views()); } _track_selection_at_start = _editor->selection->tracks; @@ -5771,7 +5771,7 @@ SelectionDrag::motion (GdkEvent* event, bool first_move) ArdourCanvas::Coord const top = grab_y(); ArdourCanvas::Coord const bottom = current_pointer_y(); - if ((Config->get_edit_mode() != RippleAll) && top >= 0 && bottom >= 0) { + if ((Config->get_edit_mode() != RippleAll || Config->get_interview_editing()) && top >= 0 && bottom >= 0) { //first, find the tracks that are covered in the y range selection for (TrackViewList::const_iterator i = all_tracks.begin(); i != all_tracks.end(); ++i) { diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index adc757e682..6d32897119 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -9309,7 +9309,7 @@ bool Editor::should_ripple () const { return (Config->get_edit_mode() == Ripple || - Config->get_edit_mode() == RippleAll); + (Config->get_edit_mode() == RippleAll && (selection->tracks.size() > 1 || !Config->get_interview_editing()))); } void diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index d77397738b..8a0a9a7a9c 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -3234,6 +3234,20 @@ These settings will only take effect after %1 is restarted.\n\ lm->add (Manual, _("manual layering")); add_option (_("Editor"), lm); + bo = new BoolOption ( + "interview-editing", + _("Improve editing behavior for editing multi-track voice interviews"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_interview_editing), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_interview_editing) + ); + add_option (_("Editor"), bo); + Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), + _("When enabled, range selection while in Ripple All will not propagate across all tracks.\n" + "When disabled, range selection while in Ripple All will propagate across all tracks.\n" + "This setting only has effect when in Ripple All mode.") + ); + + add_option (_("Editor"), new OptionEditorHeading (_("Split/Separate"))); ComboOption *rras = new ComboOption ( diff --git a/gtk2_ardour/slot_properties_box.cc b/gtk2_ardour/slot_properties_box.cc index edfccb9636..e7604ef84c 100644 --- a/gtk2_ardour/slot_properties_box.cc +++ b/gtk2_ardour/slot_properties_box.cc @@ -345,9 +345,9 @@ SlotPropertyTable::SlotPropertyTable () eLaunchBox->set_edge_color (0x000000ff); // black eLaunchBox->add (_launch_table); - attach(*trigBox, 0,1, 0,1, Gtk::FILL, Gtk::SHRINK ); - attach(*eLaunchBox, 1,2, 0,1, Gtk::FILL, Gtk::SHRINK ); - attach(*eFollowBox, 2,3, 0,1, Gtk::FILL, Gtk::SHRINK ); + attach(*trigBox, 0,1, 0,1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL); + attach(*eLaunchBox, 1,2, 0,1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL); + attach(*eFollowBox, 2,3, 0,1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL); } SlotPropertyTable::~SlotPropertyTable () diff --git a/gtk2_ardour/trigger_page.cc b/gtk2_ardour/trigger_page.cc index c4ba2c3eb3..6409c43211 100644 --- a/gtk2_ardour/trigger_page.cc +++ b/gtk2_ardour/trigger_page.cc @@ -142,13 +142,13 @@ TriggerPage::TriggerPage () table->set_border_width (8); int col = 0; - table->attach (_slot_prop_box, col, col + 1, 0, 1, Gtk::FILL, Gtk::SHRINK); + table->attach (_slot_prop_box, col, col + 1, 0, 1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL); col = 1; - table->attach (_audio_trig_box, col, col + 1, 0, 1, Gtk::FILL, Gtk::SHRINK); + table->attach (_audio_trig_box, col, col + 1, 0, 1, Gtk::FILL, Gtk::SHRINK | Gtk::FILL); ++col; -#if MIDI_PROPERTIES_BOX_IMPLEMENTED +#ifdef MIDI_PROPERTIES_BOX_IMPLEMENTED col = 2; table->attach (_midi_trig_box, col, col + 1, 0, 1, Gtk::FILL, Gtk::SHRINK); ++col; diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 03c4c09fa4..a9cc7337ad 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -113,6 +113,7 @@ CONFIG_VARIABLE (bool, region_boundaries_from_onscreen_tracks, "region-boundarie CONFIG_VARIABLE (FadeShape, default_fade_shape, "default-fade-shape", FadeConstantPower) CONFIG_VARIABLE (RangeSelectionAfterSplit, range_selection_after_split, "range-selection-after-split", PreserveSel) CONFIG_VARIABLE (RegionSelectionAfterSplit, region_selection_after_split, "region-selection-after-split", None) +CONFIG_VARIABLE (bool, interview_editing, "interview-editing", false) /* monitoring, mute, solo etc */