level_meter = new LevelMeter(_session);
- gain_slider->signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeter::start_gain_touch));
- gain_slider->signal_button_release_event().connect (sigc::mem_fun(*this, &GainMeter::end_gain_touch));
+ gain_slider->signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeter::gain_slider_button_press));
+ gain_slider->signal_button_release_event().connect (sigc::mem_fun(*this, &GainMeter::gain_slider_button_release));
gain_slider->set_name ("GainFader");
gain_display.set_name ("MixerStripGainDisplay");
GainMeterBase::gain_adjusted ()
{
if (!ignore_toggle) {
- if (_route) {
- if (_route->amp() == _amp) {
- if (_is_midi) {
- _route->set_gain (gain_adjustment.get_value(), this);
- } else {
- _route->set_gain (slider_position_to_gain (gain_adjustment.get_value()), this);
- }
+ if (_route && _route->amp() == _amp) {
+ if (_is_midi) {
+ _route->set_gain (gain_adjustment.get_value(), this);
} else {
- _amp->set_gain (slider_position_to_gain (gain_adjustment.get_value()), this);
+ _route->set_gain (slider_position_to_gain (gain_adjustment.get_value()), this);
}
+ } else {
+ _amp->set_gain (slider_position_to_gain (gain_adjustment.get_value()), this);
}
}
void
GainMeterBase::set_fader_name (const char * name)
{
- gain_slider->set_name (name);
+ uint32_t rgb_active = rgba_from_style (name, 0xff, 0, 0xff, 0, "bg", STATE_ACTIVE, false);
+ uint32_t rgb_normal = rgba_from_style (name, 0xff, 0xff, 0, 0, "bg", STATE_NORMAL, false);
+
+ gain_slider->set_border_colors (rgb_normal, rgb_active);
}
void
break;
case MeterPostFader:
+ return MeterOutput;
+ break;
+
+ case MeterOutput:
return MeterCustom;
break;
*/
if (ev->button == 1) {
- set_mix_group_meter_point (*_route, next_meter_point (_route->meter_point()));
+ set_route_group_meter_point (*_route, next_meter_point (_route->meter_point()));
}
} else {
gint
GainMeterBase::meter_release(GdkEventButton*)
{
- if(!ignore_toggle){
- if (wait_for_release){
+ if (!ignore_toggle) {
+ if (wait_for_release) {
wait_for_release = false;
if (_route) {
}
void
-GainMeterBase::set_mix_group_meter_point (Route& route, MeterPoint mp)
+GainMeterBase::set_route_group_meter_point (Route& route, MeterPoint mp)
{
- RouteGroup* mix_group;
+ RouteGroup* route_group;
- if((mix_group = route.route_group()) != 0){
- mix_group->apply (&Route::set_meter_point, mp);
+ if ((route_group = route.route_group ()) != 0) {
+ route_group->foreach_route (boost::bind (&Route::set_meter_point, _1, mp, false));
} else {
route.set_meter_point (mp);
}
}
}
-gint
-GainMeterBase::start_gain_touch (GdkEventButton*)
+bool
+GainMeterBase::gain_slider_button_press (GdkEventButton* ev)
{
- _amp->gain_control()->start_touch (_amp->session().transport_frame());
- return FALSE;
+ switch (ev->type) {
+ case GDK_BUTTON_PRESS:
+ _amp->gain_control()->start_touch (_amp->session().transport_frame());
+ break;
+ default:
+ return false;
+ }
+
+ return true;
}
-gint
-GainMeterBase::end_gain_touch (GdkEventButton*)
+bool
+GainMeterBase::gain_slider_button_release (GdkEventButton* ev)
{
_amp->gain_control()->stop_touch (false, _amp->session().transport_frame());
- return FALSE;
+ return true;
}
gint
gain_automation_state_button.set_size_request(15, 15);
gain_automation_style_button.set_size_request(15, 15);
- HBox* fader_centering_box = manage (new HBox);
- fader_centering_box->pack_start (*gain_slider, true, false);
-
fader_vbox = manage (new Gtk::VBox());
fader_vbox->set_spacing (0);
- fader_vbox->pack_start (*fader_centering_box, false, false, 0);
+ fader_vbox->pack_start (*gain_slider, false, false, 0);
hbox.set_spacing (2);
- hbox.pack_start (*fader_vbox, true, true);
+ hbox.pack_start (*fader_vbox, false, false, 4);
set_spacing (2);
*/
gain_display_box.pack_end (peak_display, true, true);
- hbox.pack_end (*level_meter, true, true);
+ hbox.pack_start (*level_meter, true, true);
if (r && !r->is_hidden()) {
fader_vbox->pack_start (gain_automation_state_button, false, false, 0);