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
This commit is contained in:
Carl Hetherington 2011-01-10 23:33:26 +00:00
parent ed72df29b7
commit c482638aa6
4 changed files with 29 additions and 14 deletions

View File

@ -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

View File

@ -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;

View File

@ -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).
*/

View File

@ -123,20 +123,19 @@ bool
PixFader::on_button_press_event (GdkEventButton* ev)
{
switch (ev->button) {
case 1:
case 2:
add_modal_grab();
grab_loc = (_orien == VERT) ? ev->y : ev->x;
grab_start = (_orien == VERT) ? ev->y : ev->x;
grab_window = ev->window;
dragging = true;
break;
return true;
default:
break;
}
return true;
return false;
}
bool