OSC: Add /jog/mode/name
[ardour.git] / gtk2_ardour / gain_meter.cc
index 946a09018260cdd68c97f1b016a073bdab9cf73e..c7c44c59158bb1c0f5a14b6f06f0737c5f98a2fb 100644 (file)
@@ -196,6 +196,7 @@ GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
        meter_point_button.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeter::meter_press), false);
 
        gain_adjustment.signal_value_changed().connect (sigc::mem_fun(*this, &GainMeterBase::fader_moved));
+       peak_display.signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::peak_button_press), false);
        peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &GainMeterBase::peak_button_release), false);
        gain_display.signal_key_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_key_press), false);
 
@@ -384,7 +385,7 @@ GainMeterBase::setup_meters (int len)
 void
 GainMeterBase::set_type (MeterType t)
 {
-       level_meter->set_type(t);
+       level_meter->set_meter_type(t);
 }
 
 void
@@ -426,6 +427,12 @@ GainMeterBase::gain_key_press (GdkEventKey* ev)
        return true;
 }
 
+bool
+GainMeterBase::peak_button_press (GdkEventButton* ev)
+{
+       return true;
+}
+
 bool
 GainMeterBase::peak_button_release (GdkEventButton* ev)
 {
@@ -581,7 +588,14 @@ GainMeterBase::fader_moved ()
                        value = gain_adjustment.get_value();
                }
 
-               _control->set_value (value, Controllable::UseGroup);
+               // XXX hack allow to override group
+               // (this breaks group'ed  shift+click reset)
+               if (Keyboard::the_keyboard().key_is_down (GDK_Shift_R)
+                               || Keyboard::the_keyboard().key_is_down (GDK_Shift_L)) {
+                       _control->set_value (value, Controllable::InverseGroup);
+               } else {
+                       _control->set_value (value, Controllable::UseGroup);
+               }
        }
 
        show_gain ();
@@ -645,7 +659,7 @@ gint
 GainMeterBase::meter_press(GdkEventButton* ev)
 {
        if (!_route) {
-               return FALSE;
+               return false;
        }
        if (!ignore_toggle) {
                switch (ev->button) {
@@ -676,7 +690,7 @@ GainMeterBase::meter_press(GdkEventButton* ev)
                                break;
                }
        }
-       return TRUE;
+       return true;
 }
 
 void
@@ -725,6 +739,7 @@ void
 GainMeterBase::amp_stop_touch ()
 {
        _control->stop_touch (false, _control->session().transport_frame());
+       effective_gain_display ();
 }
 
 gint