summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-01-10 23:33:26 +0000
committerCarl Hetherington <carl@carlh.net>2011-01-10 23:33:26 +0000
commitc482638aa6e0dbc0d4acdc93fe9712e1802fde32 (patch)
treecb28da2b8d23d2607e3fb14711f6e3f89d1f46b2 /gtk2_ardour
parented72df29b79f9e2dc7482f07c39010b4523c4a8e (diff)
Revert to fader-is-for-route on double-clicking a mixer strip's fader. Fixes #3685.
git-svn-id: svn://localhost/ardour2/branches/3.0@8496 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/gain_meter.cc28
-rw-r--r--gtk2_ardour/gain_meter.h7
-rw-r--r--gtk2_ardour/mixer_strip.cc3
3 files changed, 27 insertions, 11 deletions
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index 7dd7f88d7c..64fde6f6bf 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -110,8 +110,8 @@ GainMeterBase::GainMeterBase (Session* s,
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");
@@ -591,18 +591,28 @@ GainMeterBase::meter_point_clicked ()
}
}
-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;
+ case GDK_2BUTTON_PRESS:
+ SliderDoubleClicked (); /* EMIT SIGNAL */
+ 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
diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h
index 600f7c2c00..8e96c51d9c 100644
--- a/gtk2_ardour/gain_meter.h
+++ b/gtk2_ardour/gain_meter.h
@@ -155,8 +155,8 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
Gtk::Menu* meter_menu;
void popup_meter_menu (GdkEventButton*);
- gint start_gain_touch (GdkEventButton*);
- gint end_gain_touch (GdkEventButton*);
+ bool gain_slider_button_press (GdkEventButton *);
+ bool gain_slider_button_release (GdkEventButton *);
void set_route_group_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
void set_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
@@ -170,6 +170,9 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
void reset_peak_display ();
void reset_group_peak_display (ARDOUR::RouteGroup*);
+ /** Emitted when our slider is double-clicked */
+ PBD::Signal0<void> SliderDoubleClicked;
+
static sigc::signal<void> ResetAllPeakDisplays;
static sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 8c6d612012..31098f304f 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -306,6 +306,9 @@ MixerStrip::init ()
input_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::input_press), false);
output_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::output_press), false);
+ /* Go back to displaying our route's gain in the slider if it is double-clicked */
+ gain_meter().SliderDoubleClicked.connect (*this, invalidator (*this), boost::bind (&MixerStrip::revert_to_default_display, this), gui_context ());
+
/* we don't need this if its not an audio track, but we don't know that yet and it doesn't
hurt (much).
*/