diff --git a/gtk2_ardour/foldback_strip.cc b/gtk2_ardour/foldback_strip.cc index 3d2c3534c5..16e5bc73e4 100644 --- a/gtk2_ardour/foldback_strip.cc +++ b/gtk2_ardour/foldback_strip.cc @@ -95,16 +95,14 @@ FoldbackSend::FoldbackSend (boost::shared_ptr snd, boost::shared_ptrinput ()->n_ports ().n_audio () == 2) { _button.set_layout_ellipsize_width (PX_SCALE (_width - 19) * PANGO_SCALE); - boost::shared_ptr pannable = _send_del->panner ()->pannable (); - boost::shared_ptr ac; - ac = pannable->pan_azimuth_control; + boost::shared_ptr pannable = _send->panner ()->pannable (); _pan_control.set_size_request (PX_SCALE (19), PX_SCALE (19)); _pan_control.set_tooltip_prefix (_("Pan: ")); - _pan_control.set_name ("trim knob"); _pan_control.set_no_show_all (true); snd_but_pan->pack_start (_pan_control, false, false); _pan_control.show (); - _pan_control.set_controllable (ac); + _pan_control.set_controllable (pannable->pan_azimuth_control); + _pan_control.set_name (_send->panner_linked_to_route () ? "trim knob" : "pan knob"); } boost::shared_ptr lc; lc = _send->gain_control (); @@ -123,7 +121,9 @@ FoldbackSend::FoldbackSend (boost::shared_ptr snd, boost::shared_ptrActiveChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_state_changed, this), gui_context ()); _button.signal_button_press_event ().connect (sigc::mem_fun (*this, &FoldbackSend::button_press)); _button.signal_button_release_event ().connect (sigc::mem_fun (*this, &FoldbackSend::button_release)); + _pan_control.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackSend::pan_knob_press)); _send_route->PropertyChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::route_property_changed, this, _1), gui_context ()); + _send->panner_shell()->PannableChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_pan_changed, this), gui_context ()); show (); } @@ -169,6 +169,17 @@ FoldbackSend::led_clicked (GdkEventButton* ev) } } +bool +FoldbackSend::pan_knob_press (GdkEventButton* ev) +{ + if (Keyboard::is_context_menu_event (ev)) { + _send->set_panner_linked_to_route (!_send->panner_linked_to_route ()); + _pan_control.set_name (_send->panner_linked_to_route () ? "trim knob" : "pan knob"); + return true; + } + return false; +} + bool FoldbackSend::button_press (GdkEventButton* ev) { @@ -207,6 +218,13 @@ FoldbackSend::send_state_changed () _button.set_active (_send_proc->enabled ()); } +void +FoldbackSend::send_pan_changed () +{ + boost::shared_ptr pannable = _send->panner ()->pannable (); + _pan_control.set_controllable (pannable->pan_azimuth_control); +} + void FoldbackSend::level_adjusted () { diff --git a/gtk2_ardour/foldback_strip.h b/gtk2_ardour/foldback_strip.h index 149478ca4b..8213978ae5 100644 --- a/gtk2_ardour/foldback_strip.h +++ b/gtk2_ardour/foldback_strip.h @@ -83,6 +83,7 @@ public: private: void led_clicked (GdkEventButton*); + bool pan_knob_press (GdkEventButton*); bool button_press (GdkEventButton*); bool button_release (GdkEventButton*); void set_gain (float new_gain); @@ -91,6 +92,7 @@ private: void route_property_changed (const PBD::PropertyChange&); void name_changed (); void send_state_changed (); + void send_pan_changed (); void level_adjusted (); void level_changed (); void set_tooltip (); diff --git a/gtk2_ardour/themes/dark-ardour.colors b/gtk2_ardour/themes/dark-ardour.colors index 502a94c1f6..2c18002edf 100644 --- a/gtk2_ardour/themes/dark-ardour.colors +++ b/gtk2_ardour/themes/dark-ardour.colors @@ -458,6 +458,9 @@ + + +