diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index d1accfdd12..c68c699caf 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -830,9 +830,10 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter& param, control_ui->automate_button.set_sensitive (false); set_tooltip(control_ui->automate_button, _("This control cannot be automated")); } else { - control_ui->automate_button.signal_clicked.connect (sigc::bind ( - sigc::mem_fun(*this, &GenericPluginUI::astate_clicked), - control_ui)); + control_ui->automate_button.signal_button_press_event().connect ( + sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::astate_button_event), + control_ui), + false); mcontrol->alist()->automation_state_changed.connect ( control_connections, invalidator (*this), @@ -932,9 +933,13 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter& param, return control_ui; } -void -GenericPluginUI::astate_clicked (ControlUI* cui) +bool +GenericPluginUI::astate_button_event (GdkEventButton* ev, ControlUI* cui) { + if (ev->button != 1) { + return true; + } + using namespace Menu_Helpers; if (automation_menu == 0) { @@ -955,7 +960,10 @@ GenericPluginUI::astate_clicked (ControlUI* cui) items.push_back (MenuElem (_("Touch"), sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::set_automation_state), (AutoState) Touch, cui))); - anchored_menu_popup(automation_menu, &cui->automate_button, "", 1, gtk_get_current_event_time()); + anchored_menu_popup(automation_menu, &cui->automate_button, cui->automate_button.get_text(), + 1, ev->time); + + return true; } void diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index 046890aa52..57aa138af7 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -287,7 +287,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox void update_input_displays (); // workaround for preset load void control_combo_changed (ControlUI* cui, float value); - void astate_clicked (ControlUI*); + bool astate_button_event (GdkEventButton* ev, ControlUI*); void automation_state_changed (ControlUI*); void set_automation_state (ARDOUR::AutoState state, ControlUI* cui); void set_all_automation (ARDOUR::AutoState state);