diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/region_layering_order_editor.cc | 2 |
3 files changed, 17 insertions, 7 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index d4e0e60ef8..fa3ea175ce 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1819,7 +1819,7 @@ Editor::add_region_context_items (Menu_Helpers::MenuList& edit_items, boost::sha edit_items.push_back (*_popup_region_menu_item); if (track->playlist()->count_regions_at (mouse) > 1 && (layering_order_editor == 0 || !layering_order_editor->is_visible ())) { - edit_items.push_back (*manage (_region_actions->get_action ("choose-top-region")->create_menu_item ())); + edit_items.push_back (*manage (_region_actions->get_action ("choose-top-region-context-menu")->create_menu_item ())); } edit_items.push_back (SeparatorElem()); } @@ -5356,9 +5356,15 @@ Editor::show_editor_list (bool yn) } void -Editor::change_region_layering_order () +Editor::change_region_layering_order (bool from_context_menu) { - framepos_t const position = get_preferred_edit_position (); + framepos_t position; + + if (from_context_menu) { + position = event_frame (&context_click_event, 0, 0); + } else { + position = get_preferred_edit_position (); + } if (!clicked_routeview) { if (layering_order_editor) { @@ -5380,7 +5386,8 @@ Editor::change_region_layering_order () } if (layering_order_editor == 0) { - layering_order_editor = new RegionLayeringOrderEditor(*this); + layering_order_editor = new RegionLayeringOrderEditor (*this); + layering_order_editor->set_position (WIN_POS_MOUSE); } layering_order_editor->set_context (clicked_routeview->name(), _session, pl, position); @@ -5391,7 +5398,7 @@ void Editor::update_region_layering_order_editor () { if (layering_order_editor && layering_order_editor->is_visible ()) { - change_region_layering_order (); + change_region_layering_order (true); } } diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index a149dba796..efb78c48ce 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -1484,7 +1484,10 @@ Editor::register_region_actions () sigc::bind (sigc::mem_fun (*this, &Editor::align_regions_relative), ARDOUR::SyncPoint) ); - Glib::RefPtr<Action> a = reg_sens (_region_actions, "choose-top-region", _("Choose Top..."), mem_fun (*this, &Editor::change_region_layering_order)); + Glib::RefPtr<Action> a = reg_sens (_region_actions, "choose-top-region", _("Choose Top..."), sigc::bind (sigc::mem_fun (*this, &Editor::change_region_layering_order), false)); + a->set_accel_group (get_accel_group ()); + + a = reg_sens (_region_actions, "choose-top-region-context-menu", _("Choose Top..."), sigc::bind (sigc::mem_fun (*this, &Editor::change_region_layering_order), true)); a->set_accel_group (get_accel_group ()); _all_region_actions_sensitized = true; diff --git a/gtk2_ardour/region_layering_order_editor.cc b/gtk2_ardour/region_layering_order_editor.cc index b0df691ca7..11882656a1 100644 --- a/gtk2_ardour/region_layering_order_editor.cc +++ b/gtk2_ardour/region_layering_order_editor.cc @@ -15,7 +15,7 @@ using namespace Gtk; using namespace ARDOUR; RegionLayeringOrderEditor::RegionLayeringOrderEditor (PublicEditor& pe) - : ArdourWindow (pe, _("RegionLayeringOrderEditor")) + : ArdourWindow (_("RegionLayeringOrderEditor")) , playlist () , position () , in_row_change (false) |