Consistently use context-menu button action
This fixes an issue where brining up a menu can directly activate an action in the menu. Notably on macOS. Nathan reports that this may also address #9515 Note: mac touchpads are not affected since right-click there is effectively a "press and hold".
This commit is contained in:
parent
43c5f0ab46
commit
c162aa7aca
@ -1109,7 +1109,7 @@ ARDOUR_UI::tabbable_visibility_button_press (GdkEventButton* ev, string const& t
|
||||
string menu_name = string ("/ui/") + tabbable_name + X_("TabbableButtonMenu");
|
||||
Gtk::Menu* menu = dynamic_cast<Gtk::Menu*> (ActionManager::get_widget (menu_name.c_str()));
|
||||
if (menu) {
|
||||
menu->popup (3, ev->time);
|
||||
menu->popup (ev->button, ev->time);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -1745,7 +1745,7 @@ AudioClock::on_button_release_event (GdkEventButton *ev)
|
||||
if (ops_menu == 0) {
|
||||
build_ops_menu ();
|
||||
}
|
||||
ops_menu->popup (1, ev->time);
|
||||
ops_menu->popup (ev->button, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -314,7 +314,7 @@ AutomationController::on_button_release(GdkEventButton* ev)
|
||||
MenuList& items = menu->items();
|
||||
items.push_back(MenuElem(_("Select Note..."),
|
||||
sigc::mem_fun(*this, &AutomationController::run_note_select_dialog)));
|
||||
menu->popup(1, ev->time);
|
||||
menu->popup(ev->button, ev->time);
|
||||
return true;
|
||||
} else if (desc.unit == ARDOUR::ParameterDescriptor::HZ) {
|
||||
Gtk::Menu* menu = ARDOUR_UI_UTILS::shared_popup_menu ();
|
||||
@ -338,7 +338,7 @@ AutomationController::on_button_release(GdkEventButton* ev)
|
||||
(double)beats)));
|
||||
}
|
||||
}
|
||||
menu->popup(1, ev->time);
|
||||
menu->popup(ev->button, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -213,7 +213,7 @@ ControlSlaveUI::vca_button_release (GdkEventButton* ev, uint32_t n)
|
||||
}
|
||||
|
||||
if (!items.empty()) {
|
||||
context_menu->popup (1, ev->time);
|
||||
context_menu->popup (ev->button, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -298,7 +298,7 @@ CueBoxUI::context_menu (uint64_t idx)
|
||||
items.push_back (SeparatorElem());
|
||||
items.push_back (MenuElem (_("Clear All..."), sigc::bind (sigc::mem_fun (*this, &CueBoxUI::clear_all_triggers), idx)));
|
||||
|
||||
_context_menu->popup (1, gtk_get_current_event_time ());
|
||||
_context_menu->popup (3, gtk_get_current_event_time ());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1026,14 +1026,14 @@ Editor::tempo_map_marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* i
|
||||
if (mm) {
|
||||
can_remove = !mm->meter().map().is_initial (mm->meter());
|
||||
build_meter_marker_menu (mm, can_remove);
|
||||
meter_marker_menu->popup (1, ev->time);
|
||||
meter_marker_menu->popup (ev->button, ev->time);
|
||||
} else if (tm) {
|
||||
can_remove = !tm->tempo().map().is_initial(tm->tempo()) && !tm->tempo().locked_to_meter();
|
||||
build_tempo_marker_menu (tm, can_remove);
|
||||
tempo_marker_menu->popup (1, ev->time);
|
||||
tempo_marker_menu->popup (ev->button, ev->time);
|
||||
} else if (bm) {
|
||||
build_bbt_marker_menu (bm);
|
||||
bbt_marker_menu->popup (1, ev->time);
|
||||
bbt_marker_menu->popup (ev->button, ev->time);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@ -1062,7 +1062,7 @@ Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item)
|
||||
build_range_marker_menu (loc, loc == transport_loop_location() || loc == transport_punch_location(), loc->is_session_range());
|
||||
|
||||
marker_menu_item = item;
|
||||
range_marker_menu->popup (1, ev->time);
|
||||
range_marker_menu->popup (ev->button, ev->time);
|
||||
|
||||
} else if (loc->is_mark()) {
|
||||
|
||||
@ -1083,12 +1083,12 @@ Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item)
|
||||
}
|
||||
#endif
|
||||
marker_menu_item = item;
|
||||
marker_menu->popup (1, ev->time);
|
||||
marker_menu->popup (ev->button, ev->time);
|
||||
|
||||
} else if (loc->is_range_marker()) {
|
||||
build_range_marker_menu (loc, false, false);
|
||||
marker_menu_item = item;
|
||||
range_marker_menu->popup (1, ev->time);
|
||||
range_marker_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1099,7 +1099,7 @@ Editor::new_transport_marker_context_menu (GdkEventButton* ev, ArdourCanvas::Ite
|
||||
build_new_transport_marker_menu ();
|
||||
}
|
||||
|
||||
new_transport_marker_menu->popup (1, ev->time);
|
||||
new_transport_marker_menu->popup (ev->button, ev->time);
|
||||
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ EditorSources::show_context_menu (int button, int time)
|
||||
#endif
|
||||
items.push_back (MenuElem (_("Remove the selected Sources"),
|
||||
sigc::mem_fun (*this, &EditorSources::remove_selected_sources)));
|
||||
menu->popup (1, time);
|
||||
menu->popup (button, time);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -497,7 +497,7 @@ GainMeterBase::popup_meter_menu (GdkEventButton *ev)
|
||||
items.push_back (MenuElem ("-4 .. -2dBFS"));
|
||||
}
|
||||
|
||||
meter_menu->popup (1, ev->time);
|
||||
meter_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -1210,7 +1210,7 @@ MixerStrip::name_button_button_press (GdkEventButton* ev)
|
||||
Gtkmm2ext::anchored_menu_popup(route_ops_menu, &name_button, "",
|
||||
1, ev->time);
|
||||
} else {
|
||||
route_ops_menu->popup (3, ev->time);
|
||||
route_ops_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -1230,7 +1230,7 @@ MixerStrip::number_button_button_press (GdkEventButton* ev)
|
||||
if (ev->button == 3) {
|
||||
list_route_operations ();
|
||||
|
||||
route_ops_menu->popup (1, ev->time);
|
||||
route_ops_menu->popup (ev->button, ev->time);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2079,7 +2079,7 @@ Mixer_UI::group_display_button_press (GdkEventButton* ev)
|
||||
RouteGroup* group = (*iter)[group_columns.group];
|
||||
|
||||
if (Keyboard::is_context_menu_event (ev)) {
|
||||
_group_tabs->get_menu(group)->popup (1, ev->time);
|
||||
_group_tabs->get_menu(group)->popup (ev->button, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -4107,7 +4107,7 @@ Mixer_UI::popup_scene_menu (GdkEventButton* ev, int scn_idx)
|
||||
items.back().set_sensitive (!PublicEditor::instance().get_selection().tracks.routelist ().empty ());
|
||||
}
|
||||
|
||||
menu->popup(1, ev->time);
|
||||
menu->popup(ev->button, ev->time);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -385,7 +385,7 @@ PannerUI::pan_button_event (GdkEventButton* ev)
|
||||
pan_menu->set_name ("ArdourContextMenu");
|
||||
}
|
||||
build_pan_menu ();
|
||||
pan_menu->popup (1, ev->time);
|
||||
pan_menu->popup (ev->button, ev->time);
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
@ -528,7 +528,7 @@ PannerUI::pan_automation_state_button_event (GdkEventButton *ev)
|
||||
if (pan_astate_menu == 0) {
|
||||
build_astate_menu ();
|
||||
}
|
||||
pan_astate_menu->popup (1, ev->time);
|
||||
pan_astate_menu->popup (ev->button, ev->time);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -559,7 +559,7 @@ PortMatrix::popup_menu (BundleChannel column, BundleChannel row, uint32_t t)
|
||||
items.push_back (MenuElem (_("Flip"), sigc::mem_fun (*this, &PortMatrix::flip)));
|
||||
items.back().set_sensitive (can_flip ());
|
||||
|
||||
_menu->popup (1, t);
|
||||
_menu->popup (3, t);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2527,7 +2527,7 @@ ProcessorBox::show_processor_menu (int arg)
|
||||
&& !std::dynamic_pointer_cast<Amp> (single_selection->processor ())
|
||||
&& !std::dynamic_pointer_cast<UnknownProcessor> (single_selection->processor ()));
|
||||
|
||||
processor_menu->popup (1, arg);
|
||||
processor_menu->popup (3, arg);
|
||||
|
||||
/* Add a placeholder gap to the processor list to indicate where a processor would be
|
||||
inserted were one chosen from the menu.
|
||||
|
@ -456,7 +456,7 @@ RouteParams_UI::show_track_menu()
|
||||
track_menu->set_name ("ArdourContextMenu");
|
||||
track_menu->items().push_back (MenuElem (_("Add Track or Bus"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::add_route)));
|
||||
}
|
||||
track_menu->popup (1, gtk_get_current_event_time());
|
||||
track_menu->popup (1, gtk_get_current_event_time()); // show by "clicked" signal, btn1
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -487,7 +487,7 @@ RouteUI::mute_press (GdkEventButton* ev)
|
||||
build_mute_menu();
|
||||
}
|
||||
|
||||
mute_menu->popup(0,ev->time);
|
||||
mute_menu->popup (ev->button, ev->time);
|
||||
|
||||
return true;
|
||||
|
||||
@ -653,7 +653,7 @@ RouteUI::solo_press(GdkEventButton* ev)
|
||||
build_solo_menu ();
|
||||
}
|
||||
|
||||
solo_menu->popup (1, ev->time);
|
||||
solo_menu->popup (ev->button, ev->time);
|
||||
|
||||
} else {
|
||||
|
||||
@ -1027,7 +1027,7 @@ RouteUI::rec_enable_release (GdkEventButton* ev)
|
||||
if (Keyboard::is_context_menu_event (ev)) {
|
||||
build_record_menu ();
|
||||
if (_record_menu) {
|
||||
_record_menu->popup (1, ev->time);
|
||||
_record_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1154,7 +1154,7 @@ RouteUI::show_sends_press(GdkEventButton* ev)
|
||||
build_sends_menu ();
|
||||
}
|
||||
|
||||
sends_menu->popup (0, ev->time);
|
||||
sends_menu->popup (ev->button, ev->time);
|
||||
|
||||
} else if (ev->button == 1) {
|
||||
|
||||
@ -2233,7 +2233,7 @@ RouteUI::invert_press (GdkEventButton* ev)
|
||||
--_i_am_the_modifier;
|
||||
}
|
||||
|
||||
_invert_menu->popup (0, ev->time);
|
||||
_invert_menu->popup (ev->button, ev->time);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -721,7 +721,7 @@ CueMaster::context_menu ()
|
||||
items.push_back (SeparatorElem());
|
||||
items.push_back (MenuElem (_("Clear All..."), sigc::mem_fun (*this, &CueMaster::clear_all_triggers)));
|
||||
|
||||
_context_menu->popup (1, gtk_get_current_event_time ());
|
||||
_context_menu->popup (3, gtk_get_current_event_time ());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -574,7 +574,7 @@ TriggerStrip::name_button_press (GdkEventButton* ev)
|
||||
if (ev->button == 1) {
|
||||
Gtkmm2ext::anchored_menu_popup (_route_ops_menu, &_name_button, "", 1, ev->time);
|
||||
} else {
|
||||
_route_ops_menu->popup (3, ev->time);
|
||||
_route_ops_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -546,11 +546,11 @@ TriggerUI::launch_context_menu ()
|
||||
dynamic_cast<Gtk::CheckMenuItem*> (&items.back ())->set_active (true);
|
||||
}
|
||||
|
||||
_launch_context_menu->popup (1, gtk_get_current_event_time ());
|
||||
_launch_context_menu->popup (3, gtk_get_current_event_time ());
|
||||
}
|
||||
|
||||
void
|
||||
TriggerUI::follow_context_menu ()
|
||||
TriggerUI::follow_context_menu (GdkEventButton* ev)
|
||||
{
|
||||
using namespace Gtk;
|
||||
using namespace Gtk::Menu_Helpers;
|
||||
@ -583,7 +583,7 @@ TriggerUI::follow_context_menu ()
|
||||
|
||||
_ignore_menu_action = false;
|
||||
|
||||
_follow_context_menu->popup (1, gtk_get_current_event_time ());
|
||||
_follow_context_menu->popup (ev->button, ev->time);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -73,7 +73,7 @@ public:
|
||||
void sample_chosen (int r);
|
||||
|
||||
void launch_context_menu ();
|
||||
void follow_context_menu ();
|
||||
void follow_context_menu (GdkEventButton*);
|
||||
void context_menu ();
|
||||
|
||||
void edit_jump_done (int r, TriggerJumpDialog* d);
|
||||
|
@ -664,7 +664,7 @@ TriggerEntry::follow_button_event (GdkEvent* ev)
|
||||
switch (ev->button.button) {
|
||||
case 1:
|
||||
case 3:
|
||||
follow_context_menu ();
|
||||
follow_context_menu (ev->button);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -401,7 +401,7 @@ VCAMasterStrip::vertical_button_release (GdkEventButton* ev)
|
||||
if (!context_menu) {
|
||||
build_context_menu ();
|
||||
}
|
||||
context_menu->popup (1, ev->time);
|
||||
context_menu->popup (ev->time, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -419,7 +419,7 @@ VCAMasterStrip::number_button_press (GdkEventButton* ev)
|
||||
if (!context_menu) {
|
||||
build_context_menu ();
|
||||
}
|
||||
context_menu->popup (1, ev->time);
|
||||
context_menu->popup (ev->time, ev->time);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -82,7 +82,7 @@ VisibilityGroup::button_press_event (GdkEventButton* ev)
|
||||
j->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &VisibilityGroup::toggle), i));
|
||||
}
|
||||
|
||||
m->popup (1, ev->time);
|
||||
m->popup (ev->button, ev->time);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user