summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc17
-rw-r--r--gtk2_ardour/editor_actions.cc5
-rw-r--r--gtk2_ardour/region_layering_order_editor.cc2
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)