From 75a3964c1073832249d1d8776f46fedbd9f97035 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 26 Dec 2011 23:38:56 +0000 Subject: [PATCH] add a new name for the region-layering-editor-action that tells us we were started from a context menu; dialog does not position correctly on first show... grrr. should end fix of #4588, mostly git-svn-id: svn://localhost/ardour2/branches/3.0@11083 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 17 ++++++++++++----- gtk2_ardour/editor_actions.cc | 5 ++++- 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 a = reg_sens (_region_actions, "choose-top-region", _("Choose Top..."), mem_fun (*this, &Editor::change_region_layering_order)); + Glib::RefPtr 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) -- 2.30.2