diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 2c2ac20d0b..bde5fb5e8c 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -493,7 +493,6 @@ ProcessorBox::ProcessorBox (ARDOUR::Session* sess, boost::functionsignal_unmap().connect (sigc::mem_fun (*this, &ProcessorBox::processor_menu_unmapped)); } + /* Sort out the plugin submenu */ + Gtk::MenuItem* plugin_menu_item = dynamic_cast(ActionManager::get_widget("/ProcessorMenu/newplugin")); if (plugin_menu_item) { plugin_menu_item->set_submenu (*_get_plugin_selector()->plugin_menu()); } + /* And the aux submenu */ + Gtk::MenuItem* aux_menu_item = dynamic_cast(ActionManager::get_widget("/ProcessorMenu/newaux")); if (aux_menu_item) { @@ -676,9 +679,31 @@ ProcessorBox::show_processor_menu (int arg) } } + /* Sensitise actions as approprioate */ + cut_action->set_sensitive (can_cut()); paste_action->set_sensitive (!_rr_selection.processors.empty()); + const bool sensitive = !processor_display.selection().empty(); + ActionManager::set_sensitive (ActionManager::plugin_selection_sensitive_actions, sensitive); + edit_action->set_sensitive (one_processor_can_be_edited ()); + + boost::shared_ptr single_selection; + if (processor_display.selection().size() == 1) { + single_selection = processor_display.selection().front()->processor (); + } + + boost::shared_ptr pi; + if (single_selection) { + pi = boost::dynamic_pointer_cast (single_selection); + } + + /* enable gui for plugin inserts with editors */ + controls_action->set_sensitive(pi && pi->plugin()->has_editor()); + + /* disallow rename for multiple selections, for plugin inserts and for the fader */ + rename_action->set_sensitive (single_selection && !pi && !boost::dynamic_pointer_cast (single_selection)); + processor_menu->popup (1, arg); /* Add a placeholder gap to the processor list to indicate where a processor would be @@ -842,29 +867,6 @@ ProcessorBox::build_processor_menu () return processor_menu; } -void -ProcessorBox::selection_changed () -{ - const bool sensitive = !processor_display.selection().empty(); - ActionManager::set_sensitive(ActionManager::plugin_selection_sensitive_actions, - sensitive); - edit_action->set_sensitive(one_processor_can_be_edited()); - - const bool single_selection = (processor_display.selection().size() == 1); - - boost::shared_ptr pi; - if (single_selection) { - pi = boost::dynamic_pointer_cast( - processor_display.selection().front()->processor()); - } - - /* enable gui for plugin inserts with editors */ - controls_action->set_sensitive(pi && pi->plugin()->has_editor()); - - /* disallow rename for multiple selections and for plugin inserts */ - rename_action->set_sensitive(single_selection && pi); -} - void ProcessorBox::select_all_processors () { diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index f6b4fc2fe6..a17903c323 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -257,8 +257,6 @@ class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARD void route_going_away (); - void selection_changed (); - Gtkmm2ext::DnDVBox processor_display; Gtk::ScrolledWindow processor_scroller;