diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 997d7c4658..2515d4da02 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -790,6 +790,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type); int ambiguous_file (std::string file, std::vector hits); + bool transport_button_press (GdkEventButton*, Glib::RefPtr&); + bool click_button_clicked (GdkEventButton *); Gtk::Adjustment* _dsp_load_adjustment; diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 597a66c319..f9d1b8123e 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -219,15 +219,16 @@ ARDOUR_UI::setup_transport () act = ActionManager::get_action (X_("Transport"), X_("Stop")); stop_button.set_related_action (act); - editor->get_waves_button ("transport_stop_button").set_related_action (act); + editor->get_waves_button ("transport_stop_button").signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::transport_button_press), act), false); act = ActionManager::get_action (X_("Transport"), X_("Roll")); roll_button.set_related_action (act); - editor->get_waves_button ("transport_play_button").set_related_action (act); + editor->get_waves_button ("transport_play_button").signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::transport_button_press), act), false); + act = ActionManager::get_action (X_("Transport"), X_("Record")); rec_button.set_related_action (act); - editor->get_waves_button ("transport_record_button").set_related_action (act); + editor->get_waves_button ("transport_record_button").signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::transport_button_press), act), false); act = ActionManager::get_action (X_("Transport"), X_("GotoStart")); goto_start_button.set_related_action (act); @@ -239,8 +240,9 @@ ARDOUR_UI::setup_transport () act = ActionManager::get_action (X_("Transport"), X_("Loop")); auto_loop_button.set_related_action (act); - editor->get_waves_button ("transport_loop_button").set_related_action (act); - act = ActionManager::get_action (X_("Transport"), X_("PlaySelection")); + editor->get_waves_button ("transport_loop_button").signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::transport_button_press), act), false); + + act = ActionManager::get_action (X_("Transport"), X_("PlaySelection")); play_selection_button.set_related_action (act); act = ActionManager::get_action (X_("MIDI"), X_("panic")); midi_panic_button.set_related_action (act); @@ -559,4 +561,10 @@ ARDOUR_UI::toggle_follow_edits () Config->set_follow_edits (tact->get_active ()); } - +bool +ARDOUR_UI::transport_button_press (GdkEventButton*, Glib::RefPtr& act) +{ + assert (act); + act->activate (); + return true; +}