diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index f593f4917a..2642862e4c 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -599,7 +599,8 @@ Editor::Editor () controls_layout.set_name ("EditControlsBase"); controls_layout.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|Gdk::SCROLL_MASK); - controls_layout.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::edit_controls_button_release)); + controls_layout.signal_button_press_event().connect (sigc::mem_fun(*this, &Editor::edit_controls_button_event)); + controls_layout.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::edit_controls_button_event)); controls_layout.signal_scroll_event().connect (sigc::mem_fun(*this, &Editor::control_layout_scroll), false); _cursors = new MouseCursors; @@ -3922,14 +3923,13 @@ Editor::override_visible_track_count () } bool -Editor::edit_controls_button_release (GdkEventButton* ev) +Editor::edit_controls_button_event (GdkEventButton* ev) { - if (Keyboard::is_context_menu_event (ev)) { + if ((ev->type == GDK_2BUTTON_PRESS && ev->button == 1) || (ev->type == GDK_BUTTON_RELEASE && Keyboard::is_context_menu_event (ev))) { ARDOUR_UI::instance()->add_route (); - } else if (ev->button == 1) { + } else if (ev->button == 1 && ev->type == GDK_BUTTON_PRESS) { selection->clear_tracks (); } - return true; } diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 3ca36de884..6adbf8dff0 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1106,7 +1106,7 @@ private: bool track_canvas_map_handler (GdkEventAny*); - bool edit_controls_button_release (GdkEventButton*); + bool edit_controls_button_event (GdkEventButton*); Gtk::Menu* edit_controls_left_menu; Gtk::Menu* edit_controls_right_menu; diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 0e0b5da45a..7ffbf2451d 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -151,7 +151,8 @@ Mixer_UI::Mixer_UI () scroller_base.set_flags (Gtk::CAN_FOCUS); scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); scroller_base.set_name ("MixerWindow"); - scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_release)); + scroller_base.signal_button_press_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event)); + scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event)); /* set up drag-n-drop */ vector target_table; @@ -296,7 +297,8 @@ Mixer_UI::Mixer_UI () vca_hpacker.signal_scroll_event().connect (sigc::mem_fun (*this, &Mixer_UI::on_vca_scroll_event), false); vca_scroller.add (vca_hpacker); vca_scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC); - vca_scroller.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_release)); + vca_scroller.signal_button_press_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event)); + vca_scroller.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_event)); vca_vpacker.pack_start (vca_scroller, true, true); @@ -2393,15 +2395,12 @@ Mixer_UI::add_route_group (RouteGroup* group) } bool -Mixer_UI::strip_scroller_button_release (GdkEventButton* ev) +Mixer_UI::strip_scroller_button_event (GdkEventButton* ev) { - using namespace Menu_Helpers; - - if (Keyboard::is_context_menu_event (ev)) { + if ((ev->type == GDK_2BUTTON_PRESS && ev->button == 1) || (ev->type == GDK_BUTTON_RELEASE && Keyboard::is_context_menu_event (ev))) { ARDOUR_UI::instance()->add_route (); return true; } - return false; } diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index 1d56201734..638b8706b5 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -211,7 +211,7 @@ private: std::list strips; void scroller_drag_data_received (const Glib::RefPtr&, int, int, const Gtk::SelectionData&, guint, guint); - bool strip_scroller_button_release (GdkEventButton*); + bool strip_scroller_button_event (GdkEventButton*); bool masters_scroller_button_release (GdkEventButton*); void scroll_left (); void scroll_right (); diff --git a/gtk2_ardour/recorder_ui.cc b/gtk2_ardour/recorder_ui.cc index da7261e126..38af9b36da 100644 --- a/gtk2_ardour/recorder_ui.cc +++ b/gtk2_ardour/recorder_ui.cc @@ -145,7 +145,8 @@ RecorderUI::RecorderUI () _scroller_base.set_flags (CAN_FOCUS); _scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); - _scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &RecorderUI::scroller_button_release)); + _scroller_base.signal_button_press_event().connect (sigc::mem_fun(*this, &RecorderUI::scroller_button_event)); + _scroller_base.signal_button_release_event().connect (sigc::mem_fun(*this, &RecorderUI::scroller_button_event)); _scroller_base.set_size_request (-1, PX_SCALE (20)); _scroller_base.signal_expose_event().connect (sigc::bind (sigc::ptr_fun(&ArdourWidgets::ArdourIcon::expose), &_scroller_base, ArdourWidgets::ArdourIcon::ShadedPlusSign)); @@ -504,9 +505,9 @@ RecorderUI::parameter_changed (string const& p) } bool -RecorderUI::scroller_button_release (GdkEventButton* ev) +RecorderUI::scroller_button_event (GdkEventButton* ev) { - if (Keyboard::is_context_menu_event (ev)) { + if ((ev->type == GDK_2BUTTON_PRESS && ev->button == 1) || (ev->type == GDK_BUTTON_RELEASE && Keyboard::is_context_menu_event (ev))) { ARDOUR_UI::instance()->add_route (); return true; } diff --git a/gtk2_ardour/recorder_ui.h b/gtk2_ardour/recorder_ui.h index 3dc5a0cdce..3d24438666 100644 --- a/gtk2_ardour/recorder_ui.h +++ b/gtk2_ardour/recorder_ui.h @@ -103,7 +103,7 @@ private: void meter_area_size_request (GtkRequisition*); void meter_area_layout (); - bool scroller_button_release (GdkEventButton*); + bool scroller_button_event (GdkEventButton*); void arm_all (); void arm_none ();