diff options
-rw-r--r-- | gtk2_ardour/panner_ui.cc | 19 | ||||
-rw-r--r-- | gtk2_ardour/panner_ui.h | 2 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 2a6daa1701..7837008f71 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -414,6 +414,17 @@ PannerUI::build_pan_menu () items.push_back (MenuElem (_("Edit..."), sigc::mem_fun (*this, &PannerUI::pan_edit))); } + if (_send_mode) { + items.push_back (SeparatorElem()); + // XXX change string after string-freeze XXX -> "Link to route panner" + items.push_back (CheckMenuElem (_("Link panner controls"), sigc::mem_fun(*this, &PannerUI::pan_bypass_toggle))); + send_link_menu_item = static_cast<Gtk::CheckMenuItem*> (&items.back()); + send_link_menu_item->set_active (_panshell->is_linked_to_route ()); + send_link_menu_item->signal_toggled().connect (sigc::mem_fun(*this, &PannerUI::pan_link_toggle)); + } else { + send_link_menu_item = NULL; + } + if (_panner_list.size() > 1 && !_panshell->bypassed()) { RadioMenuItem::Group group; items.push_back (SeparatorElem()); @@ -438,6 +449,14 @@ PannerUI::pan_bypass_toggle () } void +PannerUI::pan_link_toggle () +{ + if (send_link_menu_item && (_panshell->is_linked_to_route() != send_link_menu_item->get_active())) { + _panshell->set_linked_to_route (!_panshell->is_linked_to_route()); + } +} + +void PannerUI::pan_edit () { if (_panshell->bypassed()) { diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index bd5c8cb5f1..d02fc1262d 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -135,9 +135,11 @@ private: Gtk::Menu* pan_menu; Gtk::CheckMenuItem* bypass_menu_item; + Gtk::CheckMenuItem* send_link_menu_item; void build_pan_menu (); void pan_reset (); void pan_bypass_toggle (); + void pan_link_toggle (); void pan_edit (); void pan_set_custom_type (std::string type); |