From 976e16340615caa446bf2d1987ced37118e249b3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 30 Dec 2011 01:50:34 +0000 Subject: [PATCH] make insert-patch-change from context menu use context click event for position (fixes #4570) git-svn-id: svn://localhost/ardour2/branches/3.0@11113 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour.menus.in | 2 +- gtk2_ardour/editor.h | 2 +- gtk2_ardour/editor_actions.cc | 3 ++- gtk2_ardour/editor_ops.cc | 10 ++++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index b6c28db920..faa3e6ac06 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -615,7 +615,7 @@ - + diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 2b03e210a9..28701ef559 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1146,7 +1146,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void reset_region_scale_amplitude (); void adjust_region_gain (bool up); void quantize_region (); - void insert_patch_change (); + void insert_patch_change (bool from_context); void fork_region (); void do_insert_time (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index efb78c48ce..7297f3f897 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -1402,7 +1402,8 @@ Editor::register_region_actions () ); reg_sens (_region_actions, "quantize-region", _("Quantize..."), sigc::mem_fun (*this, &Editor::quantize_region)); - reg_sens (_region_actions, "insert-patch-change", _("Insert Patch Change..."), sigc::mem_fun (*this, &Editor::insert_patch_change)); + reg_sens (_region_actions, "insert-patch-change", _("Insert Patch Change..."), sigc::bind (sigc::mem_fun (*this, &Editor::insert_patch_change), false)); + reg_sens (_region_actions, "insert-patch-change-context", _("Insert Patch Change..."), sigc::bind (sigc::mem_fun (*this, &Editor::insert_patch_change), true)); reg_sens (_region_actions, "fork-region", _("Fork"), sigc::mem_fun (*this, &Editor::fork_region)); reg_sens (_region_actions, "strip-region-silence", _("Strip Silence..."), sigc::mem_fun (*this, &Editor::strip_region_silence)); reg_sens (_region_actions, "set-selection-from-region", _("Set Range Selection"), sigc::mem_fun (*this, &Editor::set_selection_from_region)); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index d387f7c0eb..39f6fa2b88 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4555,14 +4555,20 @@ Editor::quantize_region () } void -Editor::insert_patch_change () +Editor::insert_patch_change (bool from_context) { RegionSelection rs = get_regions_from_selection_and_entered (); if (rs.empty ()) { return; } - framepos_t const p = get_preferred_edit_position (false); + framepos_t p; + + if (!from_context) { + p = get_preferred_edit_position (false); + } else { + p = event_frame (&context_click_event, 0, 0); + } Evoral::PatchChange empty (0, 0, 0, 0); PatchChangeDialog d (0, _session, empty, Gtk::Stock::ADD);