diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index f3ae79dc1f..8471699337 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -1586,6 +1586,11 @@ MixerStrip::build_route_ops_menu () items.push_back (MenuElem (_("Remote Control ID..."), sigc::mem_fun (*this, &RouteUI::open_remote_control_id_dialog))); } + if (_route && !_route->is_master()) { + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Duplicate..."), sigc::mem_fun (*this, &RouteUI::duplicate_selected_routes))); + } + if (_route) { /* note that this relies on selection being shared across editor and mixer (or global to the backend, in the future), which is the only @@ -1599,8 +1604,8 @@ MixerStrip::build_route_ops_menu () selection.set (rtav); } - items.push_front (SeparatorElem()); - items.push_front (MenuElem (_("Remove"), sigc::mem_fun(PublicEditor::instance(), &PublicEditor::remove_tracks))); + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Remove"), sigc::mem_fun(PublicEditor::instance(), &PublicEditor::remove_tracks))); } } } diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index a07e97a276..731b15bfbb 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -864,8 +864,12 @@ RouteTimeAxisView::build_display_menu () items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Hide"), sigc::bind (sigc::mem_fun(_editor, &PublicEditor::hide_track_in_display), this, true))); - items.push_front (SeparatorElem()); - items.push_front (MenuElem (_("Remove"), sigc::mem_fun(_editor, &PublicEditor::remove_tracks))); + if (_route && !_route->is_master()) { + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Duplicate..."), boost::bind (&ARDOUR_UI::start_duplicate_routes, ARDOUR_UI::instance()))); + } + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Remove"), sigc::mem_fun(_editor, &PublicEditor::remove_tracks))); } void diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 8cb91020c3..8afa706e37 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -1729,6 +1729,12 @@ RouteUI::set_route_active (bool a, bool apply_to_selection) } } +void +RouteUI::duplicate_selected_routes () +{ + ARDOUR_UI::instance()->start_duplicate_routes(); +} + void RouteUI::toggle_denormal_protection () { diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 8ef85af0b9..04ddf683e2 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -194,6 +194,7 @@ class RouteUI : public virtual AxisView virtual void route_active_changed () {} void set_route_active (bool, bool); + void duplicate_selected_routes (); Gtk::Menu* record_menu; void build_record_menu ();